2012-09-01 47 views
0

我使用Ajax做跨域使用JSON調用,並且腳本在FF中工作正常,但在ie中,腳本將不會使用結果填充select menu,即ie它將顯示錯誤,所以我知道腳本肯定工作,並進行跨域調用,任何人都可以告訴我我做錯了什麼?JSON跨域使用AJAX不工作ie即

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); 

} 
+0

哪裏有AJAX?請求JSON文件或JS文件的 –

+0

? –

+0

@MihaiIorga:它實際上是一個JSONP請求,所以它是向頭部添加腳本標記的代碼。 – Guffa

回答

0

我認爲這是您添加選項到選擇的方式。創建一個新的選項元素並添加到select元素,而不是替換所有HTML內容:

var opt = document.createElement('OPTION'); 
opt.text = val; 
opt.value = val; 
document.getElementById("addrlist").options.add(opt); 
0

您應該使用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是一個對象。

另外我刪除了所有的錯誤檢查,因爲它根本不需要。

P.S我添加callback=?,使之成爲JSONP AJAX請求,因爲JSONP爲跨域Ajax。

+0

再看一遍。該代碼已經在執行JSONP請求。 – Guffa

+0

在他的代碼中,但是當我這樣做時,我需要添加jQuery方式。 –

+0

是的,但你說代碼中沒有AJAX。 – Guffa