我正在尝试在 AJAX 面板不是可行选项的某个页面上实现 JSON 调用来模拟 AJAX。
当从下拉列表中选择州并填充县下拉列表时,我想调用我的 .aspx 页面。
在我的状态下拉列表中,我有这个电话:
onchange="jsonDropDownLoader('COUNTIES', this, 'Content2_DDLCounties')"
该调用在页面上,代码在这里:
function jsonDropDownLoader(sType, oParent, oChild) {
var lstrChild = document.getElementById(oChild);
var lstrFilter = ""
if (oParent.value > "") {
lstrFilter = oParent.value
}
lstrChild.options.length = 0;
if (oParent.value > "") {
var JSONobject = {};
var http_request = new XMLHttpRequest();
url = "/AltairWeb.NET/RS/jsonDropDownLoader.aspx?TYPE=" + sType + "&FILTER=" + lstrFilter
http_request.open("GET", url, false);
http_request.onreadystatechange = function () {
var done = 4, ok = 200;
if (http_request.readyState == done && http_request.status == ok) {
JSONobject = JSON.parse(http_request.responseText);
}
};
http_request.send(null);
var JSONarray = eval('(' + http_request.responseText + ')').data
for (var i = 0; i < JSONarray.length; ++i) {
var optn = document.createElement("OPTION");
optn.text = JSONarray[i].text;
optn.value = JSONarray[i].value;
lstrChild.options.add(optn);
}
}
}
它返回一个字符串,然后我用它来填充 County 下拉列表。
我正在取回数据,但它没有呈现在您的 QA 服务器上。使用带有 IE8 的开发人员工具,我可以看到我在这一行有一个错误:
JSONobject = JSON.parse(http_request.responseText);
它说没有声明 JSON。
它说我在这一行也有语法错误:
var JSONarray = eval('(' + http_request.responseText + ')').data
这在我的开发箱上完美运行。但是,我的开发盒上装有 WinXP / IIS 5,而我们的 QA 服务器是装有 IIS7.5 的 Win2008 服务器。我们有新的开发箱即将推出,但在那之前,我一直坚持使用 XP 机器。
由于它在本地工作,它似乎必须是 QA 服务器上的 Windows 或 IIS 的安全问题,可能与 http_request 调用有关,但我无法通过谷歌找到任何帮助我解决这个问题的东西。
我知道在 IE9 之前,我看到过 IE 不支持 JSON.parse 的帖子,但是当我指向我的开发服务器时,这在 IE8 中完美运行,但当我指向 QA 服务器时却不行,所以它似乎不是浏览器的问题。有任何想法吗?