我想实现一个JSON调用来模拟某个AJAX面板不是可行选项的某个页面上的AJAX。在Windows 2008上的JSON语法错误
当从下拉列表中选择一个状态并填充Counties下拉列表时,我希望调用我的.aspx页面。
在我的国家下拉,我有这样的电话:
的onchange = “jsonDropDownLoader( '县',这个 '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);
}
}
}
它返回一个字符串,然后我用它填充县下拉菜单。
我正在收回数据,但它不会在您的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调用,但我找不到任何通过谷歌帮助我解决这个问题。
我知道我已经看到JSON.parse在IE9之前不被IE支持的帖子,但是当我指向我的开发服务器时,这种方式完全适用于IE8,但是当我指向QA服务器时,似乎并不是浏览器问题。 任何想法?
是否打开兼容模式?在IE7中没有定义“JSON”。顺便说一句,这与Windows 2008无关,但与IE8,而不是与其选项。 – MaxArt 2012-07-11 22:25:02
请[不要添加签名或标语到您的帖子](http://stackoverflow.com/faq#signatures)。 – meagar 2012-07-12 16:09:43