javascript - $.get 调用外部的变量值尚未设置

标签 javascript jquery

我试图从 $.get jquery 调用内部设置变量的值,但它不起作用。下面是我的代码

var uData = [];
$('#tfriends').click(function () {
    get_json(function () {                     
       alert(uData);
    });
});


function get_json(callback) {
    $.get('url', function (data) {
        var data = $.map(data.result, function (obj) {
            obj.Id = obj.Id || obj.name;
            obj.text = obj.text || obj.name;
            return obj;
        }, "json");
        uData = data;
    });
 }

最佳答案

您没有在 $.get 函数内调用回调函数。检查下面的评论。

var uData = [];
$('#tfriends').click(function () {
    get_json(function () {                     
       alert(uData);
    });
});


function get_json(callback) {
    $.get('url', function (data) {
        var data = $.map(data.result, function (obj) {
            obj.Id = obj.Id || obj.name;
            obj.text = obj.text || obj.name;
            return obj;
        }, "json");
        uData = data;
        callback() // this line will actually call your callback function
    });
 }

编辑
正如@FelixKling 下面建议的那样,您可以在回调本身中传递数据,而不是像这样声明全局变量

// var uData = [];
$('#tfriends').click(function () {
    get_json(function (returned_data) {                     
       alert(returned_data);
    });
});


function get_json(callback) {
    $.get('url', function (data) {
        var data = $.map(data.result, function (obj) {
            obj.Id = obj.Id || obj.name;
            obj.text = obj.text || obj.name;
            return obj;
        }, "json");
        //uData = data;
        callback(data) // this line will actually call your callback function
    });
 }

关于javascript - $.get 调用外部的变量值尚未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447670/

相关文章:

javascript - 执行前检查宽度

javascript - 是否有基于浏览器的 Websocket 监听器实现?

javascript - 如果单击()或实际单击,jQuery 检查值不同

javascript - 单击外部时下拉菜单折叠

jquery - 如何使用 jQuery 在表中创建子组?

javascript - Jquery - 显示/隐藏隐藏的输入表单字段

jquery - 将下拉列表值获取到 mvc Controller 中以通过 Ajax 调用查看

javascript - 如何在 xsl 中指定要在 saxon 中运行的内联 javascript

javascript - 一次只突出显示一行,切换 css 类

javascript - IE 9 不会使用 window.open 刷新窗口,而是打开新窗口