我成功地插入数据到我的数据库在codeigniter通过一个ajax post从javascript:
//JAVASCRIPT:
$.ajax({
type: "POST",
url: submissionURL,
data: submissionString,
failure: function(errMsg) {
console.error("error:",errMsg);
},
success: function(data){
$('body').append(data); //MH - want to avoid this
}
});
//PHP:
public function respond(){
$this->load->model('scenarios_model');
$responseID = $this->scenarios_model->insert_response();
//redirect('/pages/view/name/$responseID') //MH - not working, so I have to do this
$redirectURL = base_url() . 'pages/view/name/' . $responseID;
echo "<script>window.location = '$redirectURL'</script>";
}
但问题是,我不能得到codeigniter的重定向函数的工作,也不能得到PHP的头位置方法的工作,如这里所述:
在PHP脚本完成时重定向到指定的URL ?
要么-我猜这是因为头已经发送了?因此,正如您所看到的,为了使它工作,我必须回显一个脚本标记并动态地将其插入DOM,这看起来很不灵活。我该怎么做呢?
也许你可以在响应函数中'返回' url并在js中使用它
PHP:
public function respond(){
// code
$redirectURL = base_url() . 'pages/view/name/' . $responseID;
return json_encode(['url' => $redirectURL]);
}
JS:
$.ajax({
type: "POST",
url: submissionURL,
data: submissionString,
dataType: 'JSON',
failure: function(errMsg) {
console.error("error:",errMsg);
},
success: function(data){
window.location = data.url
}
});
您必须将变量连接起来。就是这样。
redirect('controller_name/function_name/parameter/'.$redirectURL);