繁体   English   中英

为什么jquery ajax回调函数不起作用?

[英]Why does jquery ajax callback function not work?

我在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()(现在参数消息无关紧要)。

有谁有想法吗?

更新:还有一点需要注意,请确保使用某种调试器,如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"); });
}

来自文档:

弃用注意: jQuery 1.8中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。 要准备最终删除的代码,请使用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

仅供参考,有一种行为可能最终会像这样(即未调用done())。

这里是:

  1. 假设您期望一个JSON对象(您使用“Accept”mime类型请求它)。
  2. 假设Json字符串无效。

在这种情况下,从不调用done(),但always()将被调用。 在always()中,您将获得“严格”格式化的答案作为纯文本。

这可能是错误处理。 如果你想处理错误,你可以给另一个属性你传递给ajax的对象,它是“错误”,也是处理页面超时的“超时”。 查找$ .ajax函数,您将找到这些属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM