Jquery Ajax Promise不起作用

时间:2013-08-14 16:08:57

标签: jquery ajax jquery-deferred promise

我正在创建一个应用程序而且我无法发出一个承诺,我将代码分解为一个仍然不起作用的简单示例,我正在使用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"); })

4 个答案:

答案 0 :(得分:2)

您的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"); });

});

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

检查这是否有效:

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

我不知道会有什么改变,但一切都值得尝试!

答案 3 :(得分:0)

  

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

JavaScript效果很好。可能您的服务器不起作用,也不会从data.json网址返回JSON文档。

使用

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

并使用browser devtools Networks标签进行调试。