[英]JSON Cross domain using AJAX Not working with ie
我正在使用Ajax使用JSON進行跨域調用,並且該腳本在FF中運行良好,但是在該腳本中,腳本將不會用結果填充select menu
,即會顯示錯誤,因此我知道該腳本肯定可以正常工作跨域電話,誰能告訴我我做錯了嗎?
function xss_ajax(url) {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
script.setAttribute('id', 'script_id');
script_id = document.getElementById('script_id');
if (script_id) {
document.getElementsByTagName('head')[0].removeChild(script_id);
}
document.getElementsByTagName('head')[0].appendChild(script);
document.getElementById("addrlist").innerHTML = "";
document.getElementById("errlog").innerHTML = "";
}
function callback(data) {
if (typeof data['error'] != "undefined") {
if (window.on_error) {
on_error();
}
if (document.getElementById("errlog")) {
document.getElementById("errlog").innerHTML = "<br>" + data['error'] + "<br>";
} else {
alert(data['error']);
}
} else {
var val = data['address1'] + ", " + data['address2'] + ", " + data['address3'] + ", " + data['address4'] + ", " + data['postcode'];
document.getElementById("addrlist").innerHTML += "<option value='" + val + "'>" + val + "</option>";
}
}
function searchpost() {
var license = '98798797';
var url = "http://mydomin.co.uk/myfile.php?postcode=" + escape(document.getElementById("field1").value) + '&license=' + escape(license);
xss_ajax(url);
}
您應該使用jQuery庫使事情變得簡單:
var license = '98798797';
var url = "http://mydomin.co.uk/myfile.php?postcode="+escape($("#field1").val())+'&license='+escape(license);
$.getJSON(url+'&callback=?', function(data) {
var val = data.address1 + ", " + data.address2 + ", " + data.address3 + ", " + data.address4 + ", " + data.postcode;
var opt = $('option').text(val).val(val);
$("#addrlist").append(opt);
});
看看您的代碼有多短?
順便說一句,您將json數據視為一個數組,而不是一個數組,因此沒有(例如): data['address1']
我將其更改為data.address1
因為已解析的json是對象。
另外,我刪除了所有錯誤檢查,因為它根本不是必需的。
PS我添加了callback=?
使其成為JSONP ajax請求,因為jsonp用於跨域ajax。
我認為這是將選項添加到選擇中的方式。 創建一個新的option元素並添加到select元素中,而不是替換所有HTML內容:
var opt = document.createElement('OPTION');
opt.text = val;
opt.value = val;
document.getElementById("addrlist").options.add(opt);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.