Dojo ajax调用在Java代码完成之前返回?

Dojo ajax调用在Java代码完成之前返回?,java,javascript,ajax,google-chrome,dojo,Java,Javascript,Ajax,Google Chrome,Dojo,我继承的Struts2+dojo web应用程序有问题。该应用程序可以在IE9和Firefox中运行,但不能在Chrome中运行 以下是提交按钮代码: <button dojoType="dijit.form.Button" type="submit" onclick="sendRuleForm('requestSubmitForm', 'resultDiv', 'RequestSubmit.action');">Submit</button

我继承的Struts2+dojo web应用程序有问题。该应用程序可以在IE9和Firefox中运行,但不能在Chrome中运行

以下是提交按钮代码:

<button dojoType="dijit.form.Button" 
        type="submit" 
        onclick="sendRuleForm('requestSubmitForm', 'resultDiv', 'RequestSubmit.action');">Submit</button>
我注意到,如果我在Java代码中设置断点,网页甚至会在操作完成之前返回一个错误

Chrome Developer Tools表示操作/请求()的取消状态

我使用的是旧版本的dojo 1.3.1,但将其更新到最新版本并没有解决问题


有人能解释一下这个行为并告诉我如何解决这个问题吗?

您可以排除这个错误中的ajax/javascript部分。要么是

  • chrome中的一个bug(不太可能)
  • 您调用的struts页面中的一个bug可能会发回奇怪的HTTP响应(检查服务器日志)

  • 表单提交中存在“抖动”,即发送多个请求。我在猜测,但是如果你在一个选项卡中打开请求,可能会发生什么?@mschr不确定你的意思。您能澄清一下吗?右键单击开发者工具中的status=cancelled行,选择“在新选项卡中打开链接”!我不知道我能做到。我在代码中得到了一个空指针错误,它期望一个空字符串变量(通常由Struts2 framework设置)@mschr,当然,我似乎无法复制我之前评论中记录的行为。今天早上,当我尝试在一个新选项卡中打开请求时,应用程序现在将我重定向到另一个页面,因为它在会话中找不到期望的内容到onClick代码修复了我的问题。谢谢你的详细回答。干杯:)首先,bcuz表单提交按钮会重新加载页面,通常会重置开发者网络选项卡的内容
    function sendRuleForm(formId, id, actionNm) {
        var bindArgs = {
            url: actionNm,
            form: document.getElementById(formId),
            handleAs: "text",
            load: function(data) {
                document.getElementById(id).innerHTML = data;            
            },
            error: function(data) {
                alert(data);
                return;
            }
        }
        dojo.xhrPost(bindArgs);
        document.getElementById(id).innerHTML = ajaxLoader;
    }
    
    <form action="RequestSubmit.action" method="POST" target="_debugwin">
        <input type="submit" value="DebugSubmit" name="debugbutton" />
         ... remainder of form code
    
    <button dojoType="dijit.form.Button" 
            type="submit" 
            onClick="sendRuleForm('requestSubmitForm', 'resultDiv', 'RequestSubmit.action'); /* NOTE */ return false;">Submit</button>