我有这个几乎完成的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;
};