2010-02-13 54 views
1

在工作中,我們有一個使用IP生成的報告。您可以在該報告中點擊一個鏈接,該鏈接將打開一個新窗口並調用一個腳本,該腳本將帶有指向每個IP來源的谷歌地圖。根據報告,它可以返回很多IP(大約有150次)。因此,爲了解決這個問題,我們必須將數據發佈到該腳本,因爲使用GET,有時會超出URL的最大大小。IE8中的jQuery動態表單不能處理大量數據

所以我正在做的是當它鏈接它點擊打開地圖,我調用一個Javascript函數,我寫了IP,創建一個帶有目標屬性的窗體標籤,它指向新窗口被打開,附加到當前頁面,然後將IP的隱藏輸入添加到該表單。然後我打開具有指定名稱的新窗口並提交表單。代碼如下所示:

function submitToWindow(url, nameValuePairs) { 
    var form = document.createElement('form'); 
    form.setAttribute('action', url); 
    form.setAttribute('target', 'newWindow'); 
    form.setAttribute('method', 'POST'); 
    for (i=0; i < nameValuePairs.length; i++) { 
     var nameValue = nameValuePairs[i].split('='); 
     var input = $('<input name="' + nameValue[0] + '" type="hidden" value="' + nameValue[1] + '"/>'); 
     form.appendChild(input[0]); 
    } 
    document.body.appendChild(form); 
    window.open('http://fakeurl.com', 'newWindow'); 
    form.submit(); 
} 

我創建使用jQuery隱藏的輸入元素的跨瀏覽器的兼容性,因爲IE8似乎當你調用blah.setAttribute(「名」,「值」)不喜歡它;它將「name」屬性變成「submitName」。提交表單時導致問題。

這對FF甚至IE8很好,當沒有大量的隱藏輸入必須被創建。但是,當我們獲得大約150個隱藏的輸入項時,IE8中似乎沒有任何事情發生。我沒有得到任何腳本錯誤或任何東西,就好像點擊地圖鏈接被忽略了一樣。我猜這裏有一些故障。

有沒有人有關於如何做得更好的建議?

+0

你能給我們一些樣品名稱值對嗎? – 2010-02-13 00:57:50

回答

1

我想出了這個問題。

這完全不是jQuery的問題..它似乎是字符串文字的IE8限制。該namevaluepairs中竟是一個看起來像那麼這是產生一個查詢字符串...

'Key=Value&Something=Nothing' 

通過一個腳本,輸出一些HTML。當該字符串變得相當大時,IE8只是簡單地不會調用上面的submitToWindow函數。 IE8沒有錯誤,它只是沒有調用該函數。

我的工作方式是讓腳本生成隱藏的表單元素,以便我的JavaScript代碼不必分析該長字符串。