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 を使用しているので、モジュールが機能するように promise を返すことが重要です。

使用中にプロミスを返す方法はgetJSON?

この私のデュランダル モジュール

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

それはすでに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 に答える