gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:57:23 25 4
gpt4 key购买 nike

在工作中,我们生成了一份包含 IP 的报告。您可以点击该报告中的一个链接,该链接将打开一个新窗口并调用一个脚本,该脚本会显示一个谷歌地图,其中包含每个 IP 来源的精确点。根据报告,它可以返回大量 IP(有时大约 150 个)。因此,为了解决这个问题,我们必须将数据 POST 到该脚本,因为使用 GET 有时会超出 URL 的最大大小。

所以我正在做的是,当点击该链接打开 map 时,我调用我编写的 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 创建隐藏的输入元素以实现跨浏览器兼容性,因为当您调用 blah.setAttribute('name', 'value'); 时 IE8 似乎不喜欢它;它将“name”属性转换为“submitName”。这会在提交表单时引起问题。

当不需要创建大量隐藏输入时,这在 FF 甚至 IE8 中效果很好。然而,当我们获得大约 150 个隐藏输入项时,IE8 中似乎没有任何反应。我没有收到任何脚本错误或任何东西,就像忽略了 map 链接上的点击一样。我猜那里有一些故障。

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

最佳答案

我发现了这个问题。

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

'Key=Value&Something=Nothing'

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

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

关于javascript - IE8 中的 jQuery 动态表单创建无法处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com