Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery ajax/post请求,页面更改无效_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript jQuery ajax/post请求,页面更改无效

Javascript jQuery ajax/post请求,页面更改无效,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,现在,下面的问题只发生在Safari上。铬合金、歌剧(都很好用)。 我试过: function do(x){ $.ajax({url: "next.php", type: "POST", data: {'cand': x}, success: leave()}); } function leave(){window.location = "next.php";} 这: 以及上述的另外两种组合。我注意到,当我不离开页面时,ajax/post请求都能工作,但当我离开

现在,下面的问题只发生在Safari上。铬合金、歌剧(都很好用)。 我试过:

function do(x){
    $.ajax({url: "next.php",
    type: "POST",
    data: {'cand': x},
    success: leave()});
}
function leave(){window.location = "next.php";}
这:

以及上述的另外两种组合。我注意到,当我不离开页面时,ajax/post请求都能工作,但当我离开页面时,它们却不能工作。我的意思是当我使用
window.location
命令时。与中一样,用户将离开页面,但post请求将不起作用。同样,这只发生在狩猎中。我的面前没有Safari浏览器,所以我无法彻底测试它


任何有任何线索的人都可以告诉我发生了什么事吗?

如果这样做:
成功:离开()
(如第一个示例中所示),则立即评估
离开
函数,位置的更改与ajax调用同时发生。有些浏览器将完成ajax调用,有些则不会


相反,请这样做:
success:leave
。这将在ajax调用后调用
leave
函数。

如果执行此操作:
success:leave()
(如第一个示例所示),则立即评估
leave
函数,并且位置的更改与ajax调用同时发生。有些浏览器将完成ajax调用,有些则不会


相反,请这样做:
success:leave
。这将在ajax调用后调用离开函数。

您可以尝试以下操作,因为这里只在PHP执行完成后调用函数()。在您的例子中,回调可能是在Ajax完成之前执行的。在这种情况下,您可以使用一些变通方法,并使用setTimeout()在离开前等待一小段时间

$.post('next.php', {cand: x}, function() {
    // Callback function: called after php script is completed
    // setTimeout waits 500ms before leaving
    setTimeout(function(){
        leave();
    }, 500);
})

您可以尝试以下操作,因为这里只在PHP执行完成后调用函数()。在您的例子中,回调可能是在Ajax完成之前执行的。在这种情况下,您可以使用一些变通方法,并使用setTimeout()在离开前等待一小段时间

$.post('next.php', {cand: x}, function() {
    // Callback function: called after php script is completed
    // setTimeout waits 500ms before leaving
    setTimeout(function(){
        leave();
    }, 500);
})