1

Ajax 不会返回任何数据。

http://jsfiddle.net/w67C4/

$.ajax({
    dataType:'jsonp',
    url: url,
    async:false,
    success: function(data){
        getUsername = data.user.id;
    },
});

返回数据为null但需要返回userId

4

3 回答 3

3

您的数据已正确返回:

Object {user: Object, stat: "ok"}
stat: "ok"
user: Object
  ->id: "66956608@N06"
  ->username: Object
__proto__: Object

在此处输入图像描述

这是您可以处理结果的方式:

function foo() {
    return $.ajax(...);
}

foo().done(function(result) {
    // code depending on result
}).fail(function() {
    // an error occurred
});

function getUserId() {
    var url = "http://api.flickr.com/services/rest/?jsoncallback=?&api_key=fc6c52ed4f458bd9ee506912a860e466&method=flickr.urls.lookupUser&format=json&nojsoncallback=1&url=http://www.flickr.com/photos/flickr";
    var getUsername = null;

    return $.ajax({
        dataType: 'jsonp',
        url: url,
        async: false
    });
}

getUserId().done(function (result) {
    // Call the alert here..
    alert(result.user.id);
}).fail(function(err){
      alert('an error has occured :'+err.toString());
   });
于 2013-04-29T19:05:14.773 回答
2

你需要这样做:

function getUserId() {
    var url = "http://api.flickr.com/services/rest/?jsoncallback=?&api_key=fc6c52ed4f458bd9ee506912a860e466&method=flickr.urls.lookupUser&format=json&nojsoncallback=1&url=http://www.flickr.com/photos/flickr";
    var getUsername = null;

    return $.ajax({
        dataType: 'jsonp',
        url: url,
        async: false
    });
}

getUserId().done(function (result) {
    // Call the alert here..
    alert(result.user.id);
});

小提琴

于 2013-04-29T19:06:48.057 回答
0

这是因为 AJAX 函数是异步调用的。这意味着 URL 被调用,在处理过程中,javascript 代码继续执行并从您的函数返回。您可以通过在成功处理程序中为 getUsername 设置警报来看到这一点。此时您可以看到数据实际上是正确返回的。

于 2013-04-29T19:07:56.767 回答