Javascript IE8中的jQuery动态表单创建无法处理大量数据

Javascript IE8中的jQuery动态表单创建无法处理大量数据,javascript,jquery,post,internet-explorer-8,Javascript,Jquery,Post,Internet Explorer 8,在工作中,我们会生成一个包含IP的报告。在该报告中有一个链接,你可以点击它打开一个新窗口并调用一个脚本,该脚本会显示一个谷歌地图,上面有每个IP的起始点。根据报告的不同,它可以返回很多IP(有时大约150个)。因此,为了解决这个问题,我们必须将数据发布到该脚本,因为使用GET时,URL的最大大小有时会超过 因此,我所做的是,当点击链接打开地图时,我调用我编写的Javascript函数,该函数接受IP,创建一个带有目标属性的表单标记,该属性指向将要打开的新窗口,将其附加到当前页面,然后将IP的隐藏

在工作中,我们会生成一个包含IP的报告。在该报告中有一个链接,你可以点击它打开一个新窗口并调用一个脚本,该脚本会显示一个谷歌地图,上面有每个IP的起始点。根据报告的不同,它可以返回很多IP(有时大约150个)。因此,为了解决这个问题,我们必须将数据发布到该脚本,因为使用GET时,URL的最大大小有时会超过

因此,我所做的是,当点击链接打开地图时,我调用我编写的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();
}
函数提交窗口(url、nameValuePairs){
var form=document.createElement('form');
form.setAttribute('action',url);
form.setAttribute('target','newWindow');
form.setAttribute('method','POST');
对于(i=0;i
我正在使用jQuery创建隐藏的输入元素以实现跨浏览器兼容性,因为IE8似乎不喜欢调用blah.setAttribute('name','value');它将“name”属性转换为“submitName”。这会在提交表单时引发问题

当不需要创建大量隐藏输入时,这在FF甚至IE8中都非常有效。然而,当我们得到大约150个隐藏的输入项时,IE8中似乎什么也没有发生。我没有得到任何脚本错误或任何东西,就好像单击地图链接被忽略一样。我猜里面有一些故障


有人对如何做得更好有什么建议吗?

我解决了这个问题

这根本不是jQuery的问题。。这似乎是IE8对字符串文本的限制。nameValuePairs实际上是一个查询字符串,看起来像

'Key=Value&Something=Nothing'
这是由输出一些HTML的脚本生成的。当这个字符串变得相当大时,IE8就不会调用上面的submitToWindow函数。IE8没有错误,只是没有调用该函数


我解决这个问题的方法是让脚本生成隐藏的表单元素,这样我的javascript代码就不必解析那个长字符串

我解决了这个问题

这根本不是jQuery的问题。。这似乎是IE8对字符串文本的限制。nameValuePairs实际上是一个查询字符串,看起来像

'Key=Value&Something=Nothing'
这是由输出一些HTML的脚本生成的。当这个字符串变得相当大时,IE8就不会调用上面的submitToWindow函数。IE8没有错误,只是没有调用该函数


我解决这个问题的方法是让脚本生成隐藏的表单元素,这样我的javascript代码就不必解析那个长字符串

你能给我们一些样本名称-值对吗?你能给我们一些样本名称-值对吗?