簡體   English   中英

IE8中的jQuery動態表單創建無法處理大量數據

[英]jQuery dynamic form creation in IE8 not working with large amounts of data

在工作中,我們有一個包含IP的報告。 您可以在該報告中單擊一個鏈接,該鏈接將打開一個新窗口並調用一個腳本,該腳本會彈出一個Google地圖,其中包含指向每個IP起源的引腳。 根據報告的不同,它可以返回很多IP(有時大約為150)。 因此,為了解決這個問題,由於使用GET,我們不得不將數據發布到該腳本中,有時會超過URL的最大大小。

因此,我要做的是單擊該鏈接以打開地圖時,我調用了我編寫的Javascript函數,該函數接受IP,創建一個帶有target屬性的表單標簽,該標簽指向將要打開的新窗口,並附加將其添加到當前頁面,然后將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創建隱藏的輸入元素以實現跨瀏覽器兼容性,因為當您調用blah.setAttribute('name','value');時,IE8似乎不喜歡它。 它將“名稱”屬性轉換為“ submitName”。 提交表單時會導致問題。

當不需要創建大量隱藏輸入時,這在FF甚至IE8中都非常有用。 但是,當我們得到大約150個隱藏的輸入項時,IE8中似乎什么也沒有發生。 我沒有收到任何腳本錯誤或任何錯誤,就好像忽略了對地圖鏈接的單擊一樣。 我猜那里有些故障。

有人對如何更好地做到這一點有任何建議嗎?

我發現了這個問題。

這根本不是jQuery的問題。這似乎是IE8對字符串文字的限制。 nameValuePairs實際上是一個看起來像這樣的查詢字符串。

'Key=Value&Something=Nothing'

這是由輸出一些HTML的腳本生成的。 當該字符串變得相當大時,IE8根本不會調用上面的我的SubmitToWindow函數。 IE8沒有任何錯誤,只是沒有調用該函數。

解決此問題的方法是讓腳本生成隱藏的表單元素,這樣我的JavaScript代碼就不必解析該長字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM