AJAX パネルが実行可能なオプションではない特定のページで AJAX をシミュレートする JSON 呼び出しを実装しようとしています。
州がドロップダウンから選択されたときに .aspx ページを呼び出し、Counties ドロップダウンに入力します。
私の州のドロップダウンでは、私はこの呼び出しを持っています:
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 呼び出しでセキュリティ上の問題があるように思われますが、Google 経由でこれを理解するのに役立つものを見つけることができません。
JSON.parse が IE9 より前の IE でサポートされていないという投稿を見たことがありますが、開発サーバーを指すときは IE8 で完全に機能しますが、QA サーバーを指すときはそうではないようです。ブラウザの問題です。何か案は?