提问人:iso ayu 提问时间:11/9/2023 最后编辑:iso ayu 更新时间:11/10/2023 访问量:64
如何在 PHP Codeigniter 中使用 ID 显示来自控制器的重定向 [duplicate]
How to show redirect from controller using ID in PHP Codeigniter [duplicate]
问:
我有一个按钮,但它就像生成 2 个函数。我想保存数据并重定向到之前使用 ID 查看。但是,我在语法中遇到了错误。Message: Too few arguments to function c_transaksi::tambah_shrinkage(), 0 passed in C:\xampp\htdocs\testresult\system\core\CodeIgniter.php on line 532 and exactly 1 expected
这里是控制器
public function tambah_shrinkage($report_no)
{
$this->data['detail'] = $this->m_transaksi->get_by_reportmaterial($report_no);
$this->data['shrinkage'] = $this->m_transaksi->get_shrinkage();
$this->template->load('admin/layout/templatetesting','admin/transaksi/shrinkage/tambah', $this->data);
}
public function tambahaksi_shrinkage()
{
$jumlah_shrinkage = count((array)$this->input->post('nama_shrinkage_hidden'));
$data = [];
for ($i = 0; $i < $jumlah_shrinkage; $i++){
array_push($data, ['nama_shrinkage' => $this->input->post('nama_shrinkage_hidden')[$i]]);
$data[$i]['report_no'] = $this->input->post('report_no');
$data[$i]['before_wash'] = $this->input->post('before_wash_hidden')[$i];
$data[$i]['after_wash1'] = $this->input->post('after_wash1_hidden')[$i];
$data[$i]['actual1'] = $this->input->post('actual1_hidden')[$i];
$data[$i]['after_wash3'] = $this->input->post('after_wash3_hidden')[$i];
$data[$i]['actual3'] = $this->input->post('actual3_hidden')[$i];
$data[$i]['after_wash15'] = $this->input->post('after_wash15_hidden')[$i];
$data[$i]['actual15'] = $this->input->post('actual15_hidden')[$i];
$data[$i]['c_shrinkage'] = $this->input->post('c_shrinkage_hidden')[$i];
}
$this->m_transaksi->insert_shrinkage($data);
redirect('c_transaksi/tambah_shrinkage');
}
这里是“查看”按钮
<button type="submit" class="btn btn-block bg-gradient-info" style="font-weight: bolder; font-size: 13px; color:aliceblue;" onclick="history.go(-1);">SUBMIT</button>
我尝试使用js history.back和ajax,但仍然遇到相同的错误
这里是 AJAX 代码
$('#simpanshrinkage').on('click', function(){
var currentRow = $(this).closest("tr");
const data_shrinkage = {
report_no : currentRow.find("td:eq(0)").text(),
nama_shrinkage : currentRow.find("td:eq(1)").text(),
before_wash : currentRow.find("td:eq(2)").text(),
after_wash1 : currentRow.find("td:eq(3)").text(),
actual1 : currentRow.find("td:eq(4)").text(),
after_wash3 : currentRow.find("td:eq(5)").text(),
actual3 : currentRow.find("td:eq(6)").text(),
after_wash15 : currentRow.find("td:eq(7)").text(),
actual15 : currentRow.find("td:eq(8)").text(),
c_shrinkage :currentRow.find("td:eq(9)").text()
}
$.ajax({
type: 'POST',
url: "<?=site_url('c_transaksi/tambahaksi_shrinkage') ?>",
data:data_shrinkage,
success: function(data){
console.log("berhasil");
window.history.back();
}
})
})
答:
1赞
steven
11/9/2023
#1
看起来你可以这样灌输它:
你的 $.ajax POST 应该返回正确的 json
public function tambahaksi_shrinkage() { /* Do whatever you want here */ echo json_encode(['success' => true]); // this is not what you want to do inline: // redirect('c_transaksi/tambah_shrinkage'); exit; }
在处理程序中检查“成功”,然后执行重定向
$.ajax({ type: 'POST', url: "<?=site_url('c_transaksi/tambahaksi_shrinkage') ?>", data:data_shrinkage, success: function(data){ console.log("berhasil"); if(data.success) { window.location.href = "<?=site_url('c_transaksi/tambah_shrinkage') ?>"; return; } // do something here if !data.success }, dataType: 'json' // its a good habit to tell jquery what kind of response you expect });
从方法中删除参数,并尝试通过 GET-Param 将其发送到终结点。我怀疑这类似于您的存储引擎last_insert_id。因此,请在 json 中返回它,并将其作为 GET-Param 发送回终结点。或者,您可以将其存储在终端节点中并从中读取它,但这取决于您的用例。
$report_no
tambah_shrinkage
$report_no
$_SESSION
$_SESSION
评论
0赞
Adi
11/10/2023
这如何解决错误?,只要 有一个强制参数Message: Too few arguments to function c_transaksi::tambah_shrinkage(), 0 passed in C:\xampp\htdocs\testresult\system\core\CodeIgniter.php on line 532 and exactly 1 expected
tambah_shrinkage($report_no)
0赞
steven
11/10/2023
@Adi这并不能解决错误。错误是微不足道的。我认为根本问题是对ajax请求和重定向的应用程序流程的完全误解。但我会编辑我的答案并添加有关缺失参数的提示。谢谢。
评论
tambah_shrinkage
tambahaksi_shrinkage()
redirect('c_transaksi/tambah_shrinkage');
tambah_shrinkage($report_no)
redirect('c_transaksi/tambah_shrinkage');