我在jQuery ajax中遇到一个简单的回调函数问题。谷歌不会帮助,堆栈溢出也不会,所以我想这可能不是特定的东西,而是我无知的东西。对我而言,代码看起来应该是应该的。
所以,这是代码:
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()(现在参数消息并不重要)。
有没有人有任何想法?
答案 0 :(得分:14)
更新:还有一点需要注意,请确保使用某种调试器,如firebug。然后,您可以转到网络选项卡并手动查看请求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()。
答案 1 :(得分:4)
仅供参考,有一种行为可能会像这样结束(即未调用done())。
这是:
在这种情况下,从不调用done(),但always()将被调用。在always()中,您将获得“严格”格式化的答案作为纯文本。
答案 2 :(得分:1)
这可能是错误处理。如果你想处理错误,你可以给另一个属性你传递给ajax的对象,它是“错误”,也是处理页面超时的“超时”。查找$ .ajax函数,您将找到这些属性。