【发布时间】:2011-03-30 18:27:04
【问题描述】:
这是我返回的 JSON 字符串的第一部分(来自 firebug 中的 POST 响应)
{"d":"{\"companies\" : [{\"CompanyID\" : \"5\",\"CompanyName\" : \"(No Insurance Carrier)\"},{\"CompanyID\" : \"0\",\"CompanyName\" : \"(None Specified)\"},{\"CompanyID\" : \"72431\",\"CompanyName\" : \"A.M. Technologies, Inc./W.P. Hickman Systems\"},{\"CompanyID\" : \"72486\",\"CompanyName\" : \"AAA\"},...]}"}
这是 pageLoad 的脚本:
$.ajax({
type: "POST",
url: strURL + "/GetCompanyNames",
contentType: "application/json; charset=utf-8",
data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
dataType: "json",
success: function(msg) {
var options = $("#ddlCompany").attr('options');
$('option', $("#ddlCompany")).remove();
$("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
$.each(msg.d, function(item) {
options[options.length] = new Option(item.CompanyName, item.CompanyID);
});
},
error: function() {
alert("Failed to load Companies");
}
});
我得到的错误是 CompanyName 未定义。谁能看到我在这里做错了什么?我需要先到达 msg.d 中的表格吗?
$.ajax({
type: "POST",
url: strURL + "/GetCompanyNames",
contentType: "application/json; charset=utf-8",
data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
dataType: "json",
success: function(msg) {
$("#ddlCompany").get(0).options.length = 0;
$("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
window.alert(msg.d);
for (var i = 0; i <= msg.d.companies.length - 1; i++) {
$("#ddlCompany").get(0).options[$("#ddlCompany").get(0).options.length] = new Option(msg.d.companies[i].CompanyName, msg.d.companies[i].CompanyID);
}
},
error: function() {
alert("Failed to load Companies");
}
});
我也试过了,但没有找到公司。窗口警报完美地显示了 msg.d JSON。
所以这不是必需的,但是如果我将结果解析为 JSON,它可以在 Firefox 中工作,但在 IE 中不行?例如:
$.ajax({
type: "POST",
url: strURL + "/GetCompanyNames",
contentType: "application/json; charset=utf-8",
data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
dataType: "json",
success: function(msg) {
if (msg.hasOwnProperty("d")) { msg = msg.d; }
var json = JSON.parse(msg);
$("#ddlCompany").get(0).options.length = 0;
$("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
for (var i = 0; i <= json.companies.length - 1; i++) {
$("#ddlCompany").get(0).options[$("#ddlCompany").get(0).options.length] = new Option(json.companies[i].CompanyName, json.companies[i].CompanyID);
}
},
error: function() {
alert("Failed to load Companies");
}
});
知道为什么这个脚本会挂在 IE 中吗?
【问题讨论】:
-
我一定是遗漏了什么,你是说你的 msg 将等同于
{companies: [{...}]}吗?你循环中的msg.d是什么意思?
标签: jquery ajax json select options