【问题标题】:Jquery Ajax Promise does not workJquery Ajax Promise 不起作用
【发布时间】:2013-08-14 16:08:57
【问题描述】:

我正在制作一个应用程序,但我无法兑现承诺,我将代码分解为一个仍然无法正常工作的简单示例,我正在使用 EasyPHP...

ajaxDialog = function( destiny ) {
    // Promise to let me know when complete
    return $.ajax({
      url: destiny,
      dataType: 'json',
    }).promise();

  };

  teste = ajaxDialog('data.json');

  teste.done( function() { alert("sadasassa"); })

【问题讨论】:

  • ajaxDialog = $.getJSON?
  • 它是一个函数,就在代码示例的开头;)
  • 什么不起作用?您是否尝试过错误处理程序?
  • 我知道你声明了它,但它看起来与已经存在的 $.getJSON function 太相似了。为什么不直接使用呢?
  • 永远不要在没有准确解释发生的情况和任何错误消息的情况下发布“它不起作用”的问题,如果没有错误,请说明!您确定调用promise() 时没有收到错误消息吗?

标签: jquery ajax jquery-deferred promise


【解决方案1】:

您的 ajax 失败并进入失败处理程序。如果您执行以下操作,您将看到警报。

  // This does get called
  teste2.fail( function() { alert("sadasassa"); });

这是一个 jfiddle,它证明如果您确实访问了您的服务器,它就会被称为 http://jsfiddle.net/L6bJ2/367/

$(function() {

    ajaxDialog = function( destiny ) {
        // Promise to let me know when complete
        return $.ajax({
          url: '/echo/json/',
          dataType: 'json',
        }).promise();    
    };

    teste2 = ajaxDialog('data.json');    
    teste2.done( function() { alert("sadasassa"); });

});

【讨论】:

  • 我猜 OP 不希望这样,因为它比承诺更多......
  • @Bergi 我正在寻找有关jqXHRpromise() 方法的一些文档,但没有找到,我认为这就是问题所在
  • Jeffrey Way 就像我正在做的那样,它确实有效,我真的不明白,是否有一些网址可以让我尝试解决这个问题,以确保它与EasyPHP?
  • @BrunoTeixeira 这是一个使用 jsfiddle 和 XHR 的示例,使用它来创建我们可以玩的东西。 jsfiddle.net/L6bJ2/6
  • 是的,一开始我也是这么想的,但是 jQuery 将其Promise 接口定义为“具有.promise() method 的对象” :-) 所以它确实可用在 jqXHR 对象上也是如此
【解决方案2】:

试试这个:

when(ajaxDialog('data.json')).then(function() { alert("aaaa"); });

【讨论】:

  • 那会有什么变化?
  • 不走运,什么也没有发生:/
【解决方案3】:

一个仍然不起作用的简单示例

JavaScript 运行良好。可能您的服务器不工作并且没有从data.json url 返回JSON 文档。

使用

teste.done( function() {
   alert("sadasassa");
}).fail( function(x, s, e) {
   alert(s+": "+e);
});

并使用browser devtools 中的Networks 选项卡调试正在发生的事情。

【讨论】:

    【解决方案4】:

    检查这是否可行:

    return $.ajax({
      url: destiny,
      dataType: 'json',
    }).promise(function(){alert("This is a test");});
    

    我不知道会发生什么变化,但一切都值得尝试!

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      相关资源
      最近更新 更多