Javascript 单击链接时,会向服务器发送三个HTTP请求
有人能建议一下吗,我整个星期都在想这个问题,但还是没有运气 我的问题是web应用程序。当用户单击某个链接时,在单击特定链接(其他链接工作正常)后,IE8浏览器会向服务器发送三个HTTP请求。它假设只发送一个请求 第一个HTTP请求是POST-头和正文数据正确(所有参数看起来都很好) 第二个HTTP请求是POST-标头和正文数据正确(所有参数看起来都很好) 第三个HTTP请求是GET-头中没有引用,正文中没有任何内容(因为它是GET) 第三个请求导致Servlet抛出NULL指针expetion,因为Servlet尝试读取表单参数 所有请求都发送到同一个Servlet。 这三个请求发生在1-2秒内。我确信这不是关于多次点击 用户正在使用IE8和WindowsXP。 这无法在我的环境中复制 我已经在互联网上研究了一周,我注意到IE8的一个已知问题,它将创建对服务器的双重请求,这种情况似乎与Javascript中的“.submit()”有关。我已经非常详细地研究了我的代码,我相信事实并非如此 这里是链接看起来像。请建议Javascript 单击链接时,会向服务器发送三个HTTP请求,javascript,forms,request,submit,Javascript,Forms,Request,Submit,有人能建议一下吗,我整个星期都在想这个问题,但还是没有运气 我的问题是web应用程序。当用户单击某个链接时,在单击特定链接(其他链接工作正常)后,IE8浏览器会向服务器发送三个HTTP请求。它假设只发送一个请求 第一个HTTP请求是POST-头和正文数据正确(所有参数看起来都很好) 第二个HTTP请求是POST-标头和正文数据正确(所有参数看起来都很好) 第三个HTTP请求是GET-头中没有引用,正文中没有任何内容(因为它是GET) 第三个请求导致Servlet抛出NULL指针expetion,
<a href=\"#\" onClick=\"test.goToNextPage();return false;\">Test link</a>
this.goToNextPage = function()
{
// do some paramter manipulation here (such as customer data),
//not related to this issue
createForm().submit();
}
function createForm()
{
bcForm = document.createElement("form");
bcForm.setAttribute("method", "POST");
//real code add some hidden parameter(e.g. action, Form ID) and value here...
document.body.appendChild(bcForm);
return bcForm;
}
this.goToNextPage=函数()
{
//在此处执行一些参数操作(如客户数据),
//与此问题无关
createForm().submit();
}
函数createForm()
{
bcForm=document.createElement(“表单”);
bcForm.setAttribute(“方法”、“帖子”);
//实数代码在此处添加一些隐藏参数(例如动作、表单ID)和值。。。
文件.正文.附件(bcForm);
返回表格;
}
我也面临同样的问题。这是关于onclick事件在嵌套HTML元素上的传播。例如:如果你有
如果您的需要使用JS构建表单并使用链接提交?为什么不在标记中使用表单,使用JS填充隐藏字段(如有必要),并使用真正的提交按钮呢?嗨,查菲,感谢您查看并提供答案,这是非常有用的信息,示例非常好。但是,我只是使用Firebug查看页面元素层次结构,不幸的是,在外部HTML元素上没有任何其他“onClick”:(如果您使用按钮标记(不提交)替换A标记,是否会遇到相同的问题?如果是,可能是JS中存在问题。这无法在我的环境中重现:(
function crossbrowser_stopPropagation(e){
if (!e) {
e = window.event;
}
e.cancelBubble = true;
if (e.stopPropagation) {
e.stopPropagation();
}
}
<a href="#" onClick="crossbrowser_stopPropagation(event);test.goToNextPage();return false;">Test link</a>