为什么我没有获得返回值javascript

时间:2015-06-22 08:16:17

标签: javascript jquery html json html5

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



function createCheckBoxPlatform(data) {
    var platform = "";
    $.each(data, function (i, item) {
        platform += '<label><input type="checkbox" name="' + item.PlatformName + ' value="' + item.PlatformSK + '">' + item.PlatformName + '</label>' + getOS();
    });
    $('#platform').append((platform));
}

function getOS() {
    $.ajax({
        url: "/QRCNew/GetOS",
        type: "post",
        dataType: "Json",
        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;
        }
    });
}
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以将ajax调用异步,并且不必对当前逻辑进行任何更改。但是你的执行将停止,直到你没有得到你的ajax调用的回调。  的

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;
        }
    });
}

答案 2 :(得分:0)

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

也许你可以先获取os列表,然后输出你需要的内容,如下所示:

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));

        }
    });
}