当我调试我的代码时,我可以看到我有价值,但我没有获得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;
答案 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));
}
});
}