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);