3

我正在使用此代码从 facebook api 获取数据并使用 Durandal 显示,它工作正常。

   return $.ajax({
        url: 'http://graph.facebook.com/facebook?callback=?',
        dataType: 'json',
    }).promise();

我试图用 getJSON 做同样的事情

$.getJSON( "http://graph.facebook.com/facebook?callback=?");

我尝试了以下代码;它没有用。

 var jqxhr = $.getJSON("http://graph.facebook.com/facebook?callback=?");
 return jqxhr;

这让我从 facebook 获取数据。

但问题在于兑现承诺。由于我使用的是 durandal,因此返回一个让模块正常工作的承诺很重要。

我们使用时如何返回承诺getJSON

这是我的 durandal 模块

define(function (require) {
    return {
        getCustomers: function () {
            //do some ajax and return a promise
            var jqxhr = $.getJSON("http://graph.facebook.com/facebook?callback=?");
            return jqxhr;
        }
    };
});

这就是我所说的

define(function (require) {
    var backend = require('backend');
    var ko = require('knockout');

    return {
        customers: ko.observableArray([]),
        activate: function () {
            var that = this;
            return backend.getCustomers().then(function (result) {
                var arr = [];
                arr.push(result)
                that.customers(arr);
            });
        }
    };
});
4

3 回答 3

3

这应该工作

$.getJSON( "http://graph.facebook.com/facebook?callback=?").promise();
于 2013-11-05T06:24:14.390 回答
3

它已经有了 Promise 接口:“这个由 $.getJSON() 返回的 jQuery XHR 对象或“jqXHR”实现了 Promise 接口”

看这里的例子:

var a=$.getJSON( "http://graph.facebook.com/facebook?callback=?");

a.done(function (){...}).fail(function (){...}).always(function (){...});;

ps

“这让我从 facebook 获取数据。”

不。这将返回 jqXHR 对象。

于 2013-11-05T06:27:03.333 回答
3

这已经成功了。谢谢你们

return $.getJSON( "http://graph.facebook.com/facebook?callback=?").done();
于 2013-11-05T06:37:33.473 回答