返回ajax调用结果的JavaScript函数

ilk*_*kin 2 javascript jquery

需要帮助.我正在写一个函数返回ajax调用的结果,但我没有得到任何结果,我想这是一个范围问题,但有什么办法吗?这是我的代码:

function Favorites() {
    var links;
    $.ajax({
        type: "GET",
        url: "/Services/Favorite.svc/Favorites",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function(msg) {
            links = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
        }
    });
    return links;
};
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 6

Ajax是异步的,即在return links执行时,success甚至可能没有调用回调函数.

扩展您的函数以接受回调:

function Favorites(callback) {
    var links;
    $.ajax({
        type: "GET",
        url: "/Services/Favorite.svc/Favorites",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: callback
    });
};
Run Code Online (Sandbox Code Playgroud)

并称之为:

var callback = function(msg) {
      links = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d;
      // do other stuff with links here
}

Favorites(callback);
Run Code Online (Sandbox Code Playgroud)