首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么jquery ajax回调函数不工作?

为什么jquery ajax回调函数不工作?
EN

Stack Overflow用户
提问于 2012-05-03 05:51:55
回答 3查看 29.8K关注 0票数 9

我在使用jQuery ajax中的一个简单回调函数时遇到了问题。Google不会提供帮助,堆栈溢出也不会,所以我猜这可能不是特定的东西,而是我太无知而看不到的东西。对我来说,代码看起来完全像它应该的样子。

所以,下面是代码:

代码语言:javascript
运行
复制
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中,它简单地说

代码语言:javascript
运行
复制
<?php
    echo "called";
?>

就我而言,“被调用的”应该被提醒--但它不是。我已经检查了函数sendMessage()是否被调用了(而参数message目前并不重要)。

有谁知道吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-03 06:01:22

更新:还有一件事需要注意,确保你使用了像firebug这样的调试器。然后,您可以转到network选项卡,手动查看请求url和响应,以查看是否得到200响应或内部服务器错误等。

尝试在成功函数中添加一个console.log(data);,看看是否返回了什么。

您还可以使用.always(data)

代码语言:javascript
运行
复制
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()。

票数 13
EN

Stack Overflow用户

发布于 2014-07-29 17:50:11

仅供参考,有一个行为可能会像这样结束(即done()未调用)。

这就是它:

  1. 假设你需要一个JSON对象(你是用"Accept“mime类型请求的)。
  2. 假设Json字符串无效。

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

票数 4
EN

Stack Overflow用户

发布于 2012-05-03 05:55:52

可能是错误处理的问题。如果要处理错误,还可以为传递给ajax的对象提供另一个属性,即"error",以及用于处理页面超时的"timeout“。查看$.ajax函数,您将找到这些属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10422244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档