返回ajax调用结果的JavaScript函数

标签 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;
};

最佳答案

Ajax 是异步的,即当执行返回链接时,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
    });
};

并用以下方式调用它:

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

Favorites(callback);

关于返回ajax调用结果的JavaScript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682274/

相关文章:

javascript - Fullcalendar 禁用拖放但启用可编辑

javascript - 可折叠菜单需要在初始加载时关闭所有标题

javascript - firebase.auth.signInWithCustomToken 不是函数node.js

javascript - 谷歌浏览器扩展程序: Alert when Modal/popup closed

javascript - select2使用ajax url分页

javascript 变量使用帮助

javascript - 语义 UI 分隔线黑条

javascript - 使用 CSS 和/或 JS 动态裁剪(或屏蔽?)所有图像到最短图像的高度?

javascript - Jquery - 如何在 div 中的文本之前添加元素?

jquery - 更改 Google 图表中图表范围过滤器的值