jQuery美元.POST只适用于在它之后执行的函数



我有这个几乎完成的jQuery项目,对于最后一部分,当用户的数据已经成功验证时,它使用$执行一个外部PHP脚本。Post函数,将用户输入的info作为参数传递。

我的问题是,我的回调函数只工作,如果我把一个警报功能后。

:

$.post("backend.php", dataString, 
    function(response) {
        if (response=="1") {
            alert("ok"); 
        }
    }, 'html'); 
alert('test');

但是如果我不把这个警告放在结束标签之后,我的脚本就不会在回调中发出警告"ok"或其他任何东西。

你们有人看到我的代码有什么问题吗?

谢谢!

我的猜测是$.post()脚本之后出现了一些东西,导致页面更改或导致帖子停止或失败。

基本上,所有alert('test')所做的就是阻塞您的代码,等待按下OK按钮。唯一可以让你的代码突然工作的方法是,如果在你的代码中有一些东西在第二次警报之后执行,打乱了post。

记住这篇文章是异步的。当你运行其他代码时,它会在后台发生,只有当它成功时,alert('ok')才会运行。

所以,我猜是你的页面上有别的东西在运行,把文章弄乱了。

所以我在这里迟到了,但我在这里遇到了似乎完全相同的问题,并最终找到了解决方案。在我的例子中,我有一个表单提交按钮,我还试图将其用作JQuery POST调用的触发器。问题是,当提交表单时,它显然取消了JQuery POST调用。

在我的例子中,解决方案是将提交按钮更改为普通按钮,然后在与POST调用相同的JQuery函数中执行表单提交——在POST调用之后的。我还需要在表单提交调用中引入一个小延迟。所以,它看起来像这样:
$("#saveStuff").click(function () {  //my save button, no longer a submit
        $.post('UpdateStatusFlag', {}, function (data) {
              //some irrelevant stuff here
            }
        });
        setTimeout("$('#MyForm').submit()", 100); //needed the small delay to allow the post call to complete
});

希望这篇文章能帮助到一些和我犯同样错误的人。

这对年轻球员来说是非常微妙的陷阱(比如我自己)。我在做完全相同的事情,在一个表单的提交事件上发帖。当然,表单同时提交和帖子同时发布,所以当帖子的响应返回时,表单已经刷新并重置了自己。混乱统治。

在我的例子中,我并不是真的想要表单实际提交,所以在我的提交函数中添加return false;作为最后的语句很好地整理了它。

例如:

$('#myForm').submit(function() {
    $.post('myurl',{some params});
    return false;
};

最新更新