Javascript 为什么我不';无法获取返回值

Javascript 为什么我不';无法获取返回值,javascript,jquery,json,html,Javascript,Jquery,Json,Html,当我调试代码时,我可以看到我有值,但我没有得到createCheckBoxPlatform FN的值 函数createCheckBoxPlatform(数据){ var平台=”; $。每个(数据、功能(i、项){ 平台+=''+项操作系统名+''; }); os+=''; 返回操作系统; } }); }我认为你必须改变你的逻辑。除非是同步调用,否则createCheckBoxPlatform循环将在getOS()ajax调用返回之前完成 您可以将函数拆分为多个部分,收集每个数据点的getOS数

当我调试代码时,我可以看到我有值,但我没有得到createCheckBoxPlatform FN的值

函数createCheckBoxPlatform(数据){
var平台=”;
$。每个(数据、功能(i、项){
平台+=''+项操作系统名+'';
});
os+='';
返回操作系统;
}
});

}
我认为你必须改变你的逻辑。除非是同步调用,否则createCheckBoxPlatform循环将在getOS()ajax调用返回之前完成

您可以将函数拆分为多个部分,收集每个数据点的getOS数据,然后在ajax调用返回时构建复选框。

ajax中的第一个“A”代表“异步”,这意味着调用后不会立即执行。所以你永远得不到价值

也许您可以先获取操作系统列表,然后输出所需内容,如下所示:

function createCheckBoxPlatform(myDatas) {
    $.ajax({
        url: "/QRCNew/GetOS",
        type: "post",
        dataType: "Json",
        success: function (osList) {
            var os = '<div>';
            $.each(osList, function (i, item) {
                os += '<label><input type="checkbox" name="' + item.OperatingSystemName + ' value="' + item.OperatingSystemSK + '">' + item.OperatingSystemName + '</label> ';
            });
           os += '</div>';
           $.each(myDdatas, function (i, item) {
               platform += '<label><input type="checkbox" name="' + item.PlatformName + ' value="' + item.PlatformSK + '">' + item.PlatformName + '</label>'+os
           });
           $('#platform').append((platform));

        }
    });
}
函数createCheckBoxPlatform(myDatas){
$.ajax({
url:“/QRCNew/GetOS”,
类型:“post”,
数据类型:“Json”,
成功:功能(osList){
var os=“”;
$.each(osList,函数(i,项){
os+=''+item.PlatformName+''+操作系统
});
$('平台')。追加((平台));
}
});
}

您可以使ajax调用异步,并且不必更改当前逻辑。但是,在没有得到ajax调用的回调之前,执行将停止。

函数getOS(){ $.ajax({ url:“/QRCNew/GetOS”, 类型:“post”, 数据类型:“Json”, async:true, 成功:功能(数据){ var os=“”; $。每个(数据、功能(i、项){
os+=“getOS函数正在执行一个异步请求,当您的内容附加到
#platform
时,该请求尚未完成。您可以从JS中的回调返回一个值。然后,请选择“最佳答案”。
function getOS() {
    $.ajax({
        url: "/QRCNew/GetOS",
        type: "post",
        dataType: "Json",
        async: true,
        success: function (data) {
            var os = '<div>';
            $.each(data, function (i, item) {
                os += '<label><input type="checkbox" name="' + item.OperatingSystemName + ' value="' + item.OperatingSystemSK + '">' + item.OperatingSystemName + '</label> ';
            });
            os += '</div>';
            return os;
        }
    });
}