codeigniter或PHP -如何在特定的AJAX POST提交后转到URL
codeigniter or PHP - how to go to a URL after a specific AJAX POST submission
我成功地插入数据到我的数据库在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);
相关文章:
- 在POST中将html表作为csv提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- POST时未提交Javascript值
- Ajax Post-Submit函数提交两次
- 在POST之前延迟提交
- 使用POST提交按钮,而不是使用HTML表单
- 为什么我的代码循环无限提交而不回显$post-nametest_value
- 在 Javascript 打开新页面时提交 POST 数据
- 有没有一种方法可以在提交POST后取消POST而不使用AJAX
- 表单-向多个iframe提交POST请求
- 如何使用Javascript提交POST变量
- 使用Javascript提交POST变量
- Internet Explorer浏览器问题:浏览器不提交POST数据与Ajax请求,服务器/客户端挂起
- 如何手动向服务器提交post请求
- 在使用Javascript提交POST表单的超链接上失去了右键单击功能
- 提交POST表单的最简单的跨浏览器方式是什么?
- Javascript FileReader.onload在表单提交(POST)后不起作用
- 从jade提交post表单值到节点js
- 在提交(POST)后,将选择保留在php生成的表单中
- 提交POST表单后,打开一个显示结果的新窗口