我在使用jQuery ajax中的一个简单回调函数时遇到了问题。Google不会提供帮助,堆栈溢出也不会,所以我猜这可能不是特定的东西,而是我太无知而看不到的东西。对我来说,代码看起来完全像它应该的样子。
所以,下面是代码:
function sendMessage(message)
{
//Establish connection to php script
$.ajax({
type: 'POST',
url: 'action/chat/test.php',
success: function(feedback){
alert(feedback);
}
}).error(function(){
//Do some error handling here
});
}在test.php中,它简单地说
<?php
echo "called";
?>就我而言,“被调用的”应该被提醒--但它不是。我已经检查了函数sendMessage()是否被调用了(而参数message目前并不重要)。
有谁知道吗?
发布于 2012-05-03 06:01:22
更新:还有一件事需要注意,确保你使用了像firebug这样的调试器。然后,您可以转到network选项卡,手动查看请求url和响应,以查看是否得到200响应或内部服务器错误等。
尝试在成功函数中添加一个console.log(data);,看看是否返回了什么。
您还可以使用.always(data)
function sendMessage(message)
{
//Establish connection to php script
$.ajax({
type: 'POST',
url: 'action/chat/test.php'
}).done(function(data) { console.log(data); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
}从文档中:
弃用通知: jqXHR.success()、jqXHR.error()和jqXHR.complete()回调在jQuery 1.8中将被弃用。要为最终删除它们的代码做好准备,请改用jqXHR.done()、jqXHR.fail()和jqXHR.always()。
发布于 2014-07-29 17:50:11
仅供参考,有一个行为可能会像这样结束(即done()未调用)。
这就是它:
在这种情况下,done()从未被调用,但always()将被调用。在always()中,您将得到“不好”的纯文本格式的答案。
发布于 2012-05-03 05:55:52
可能是错误处理的问题。如果要处理错误,还可以为传递给ajax的对象提供另一个属性,即"error",以及用于处理页面超时的"timeout“。查看$.ajax函数,您将找到这些属性。
https://stackoverflow.com/questions/10422244
复制相似问题