2011-06-01 114 views
3

我正在使用jQuery 1.6.1和IE9。我正在運行我的機器上的頁面,試圖從服務器請求數據。我的JavaScript看起來像這樣:IE9 jQuery Ajax不工作

var baseURL = "http://1.1.1.1/cgi-bin/ipcxml.cgi?"; 
var path = "scm:scm/data/system_names"; 
var fullURL = baseURL + path; 
$.ajax (
    { 
     url: fullURL, 
     cache: true, 
     context: $("#" + element), 
     crossDomain: true, 
     dataType: "xml", 
     type: "GET", 
     success: function (data) { 
     alert (data); 
     } 
    } 
); 

當我運行此代碼,我看在IE開發者工具的網絡流量,我沒有看到要求出去。有人有任何想法嗎?

+0

你嘗試在另一個瀏覽器?它工作嗎? – Kraz 2011-06-01 15:10:41

+0

在Firefox 4中,請求發送,但沒有響應返回。如果我做直接的XMLHttpRequest對象(處理IE6和IE5),一切工作在IE中,但不是在Firefox中。我想讓jQuery爲跨瀏覽器支持工作。 – Nik 2011-06-01 15:11:50

+1

空的迴應讓我覺得問題可能是'crossDomain:true'。你需要一些處理它,因爲大多數瀏覽器默認阻止XSS。與往常一樣,IE的限制性較小。請參閱[Same_origin_policy](http://en.wikipedia.org/wiki/Same_origin_policy)。 **編輯**:我注意到我沒有回答你原來的問題:不知道你爲什麼沒有看到請求。也許你應該嘗試首先在本地進行。 – Kraz 2011-06-01 15:27:12

回答

1

我不知道它是否是問題的根本原因,但在查詢字符串中使用時,冒號(:)和斜槓(/)字符必須爲encoded。請嘗試:

var fullURL = baseURL + encodeURIComponent(path); 
+0

我從來沒有考慮過的一個偉大點,然而,它並沒有解決我的問題。 – Nik 2011-06-01 15:43:39

+0

@Nik,除了您的問題評論中已經提到的相同的原產地政策問題,我可以看到的唯一潛在問題將與「背景」設置有關。你確定'$(「#」+ element)'實際上是否匹配任何東西? – 2011-06-01 15:48:37

+0

它確實匹配一個元素。 – Nik 2011-06-01 15:49:51

4

我的標籤有問題,其中的內容沒有像其他瀏覽器那樣更新。我通過網絡掃描,終於讓我找到我的解決方案:

cache:false 

IE安全造成如此轉動緩存爲false緩存相關的問題就解決了我的概率。希望它有幫助