第二个Javascript表单POST在Chrome浏览器失败,在IE和FF工作
Second Javascript form POST fails in Chrome, works in IE and FF
我打开一个新的窗口通过javascript POST响应用户点击在flash应用程序。用户可能会关闭新窗口,并希望通过再次单击第一页上的按钮重新打开它。由于我必须将一些大参数传递给第二页,所以我必须执行POST, GET不起作用。到目前为止,我已经在Chrome, FF和IE中打开了第二个页面,并且第一次点击按钮时行为正确。然而,在Chrome(它适用于IE和FF)第二次点击按钮,POST被忽略,新窗口不打开。
这是我用来做POST的函数。我已经验证了它在Chrome中使用所有相同的参数和没有错误通知的form.submit()行,但是新窗口仍然没有打开。
function post_to_url(path, paramString) {
var params = paramString.split("|");
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", path);
form.setAttribute("target", "_blank");
for (var i=0; i<params.length; i++) {
var hiddenField = document.createElement("input");
var param = params[i].split(":");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", param[0]);
hiddenField.setAttribute("value", param[1]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
关于如何修改以使其在Chrome中工作的任何想法?
更新:它似乎没有从DOM在Chrome中删除表单。我不确定这是不是问题所在,但无论如何它都应该被删除。
我们还注意到,虽然第二篇文章在Chrome在Linux和Windows不能通过,他们在mac上。然而,即使在Mac上,表单也不会从DOM中删除。
另一个更新:像这样修改代码可以正确地从DOM中删除表单,但是它不能解决POST问题。
function post_to_url(path, paramString) {
var postform = document.getElementById("postform");
if (postform != null)
document.body.removeChild(postform);
var params = paramString.split("|");
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", path);
form.setAttribute("target", "_blank");
form.id = "postform";
for (var i=0; i<params.length; i++) {
var hiddenField = document.createElement("input");
var param = params[i].split(":");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", param[0]);
hiddenField.setAttribute("value", param[1]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
var postform = document.getElementById("postform");
document.body.removeChild(postform);
}
我找到了一个解决方案。在URL的末尾添加一个随机数会导致Chrome多次运行POST。在Chrome中必须有一个"功能"来防止多个post到同一个URL。
以下是我修改的内容:
form.setAttribute("action", path + '?' + Math.random().toString());
确保弹出窗口阻止器没有阻止第二个打开。我之前也遇到过类似的问题
相关文章:
- Target=_blank don'我不在mozilla和IE工作
- jQUery Code没有'我不在IE工作
- 为什么这个书签脚本是't在IE工作
- 类构造函数super()没有'我不在IE工作
- onmousemove=null不会'我不在IE工作
- execCommand('另存为',true,'data.csv');不在IE工作
- 努力让第n个有悬停的孩子在IE工作
- Javascript Groovy按钮没有'我不在IE工作
- 属性='值'jquery选择没有'我不在IE工作
- atob不在IE工作
- 将图像附加到富文本编辑器dosen'我不在IE工作
- javascript没有'I don’我一直在IE工作
- 使用插件制作移动滑动导航,但它没有'我不在IE工作
- Video.js没有'我不在FF、IE工作
- dojo on.emit”;点击“;以及“;改变“;不在IE工作
- 为什么这个工具提示没有'不在IE工作吗?错误:应为对象
- document.getElementById('a').click()没有't在IE工作
- 插入符号插件的jquery;我不在IE工作
- 聚合物:点击事件在IE工作,但不是Chrome.如何修复
- 如何使IE工作预期与正则表达式提供的函数参数在拆分函数