gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:29:45 25 4
gpt4 key购买 nike

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

这是提交按钮代码:

<button dojoType="dijit.form.Button" 
type="submit"
onclick="sendRuleForm('requestSubmitForm', 'resultDiv', 'RequestSubmit.action');">Submit</button>

下面是上面 sendRuleForm 函数的 JavaScript 代码:

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;
}

我注意到,如果我在 Java 代码中设置断点,即使在操作完成之前,网页也会返回错误。

Chrome 开发者工具指示操作/请求的状态为已取消 ( What does status=canceled for a resource mean in Chrome Developer Tools? )

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

谁能解释一下这种行为并让我知道如何解决这个问题?

最佳答案

您可以排除此错误的 ajax/javascript 位。要么是

  1. Chrome 中的错误(不太可能)
  2. 您调用的 struts 页面中存在错误,可能会发回奇怪的 HTTP 响应(检查服务器日志)
  3. 表单提交时会出现“抖动”,会发送多个请求。我猜,但也许<button type="submit"<input type="submit" Chrome 中的处理方式有所不同

您在重定向到不同页面时遇到的情况可能是由于当您手动刷新新选项卡中的 URL 字段时 Struts 应用程序收到 GET。也可能是由于缺少登录 cookie 等原因。

要获得应用程序的真实响应,请尝试输入 target属性为 form然后以正常方式提交(没有 XHR)。

<form action="RequestSubmit.action" method="POST" target="_debugwin">
<input type="submit" value="DebugSubmit" name="debugbutton" />
... remainder of form code

此外,您的 dijit Button 有一个可重写的函数“onClick”,请注意驼峰命名法。您正在设置 DOM onclick 事件。在这种情况下,您的单击事件可能会在 dojo.xhr 触发后(当函数返回时)立即由浏览器处理。看到这个问题:Preventing form submission with Dojo

但是,要实现这种情况,同时您在调试窗口中看到“已取消”错误的唯一方法是,如果表单加载到 (i) 框架中。否则整个页面将刷新并且网络监控将重置。作为一种简单、双赢的解决方法,请按如下方式调整 onclick 属性:

<button dojoType="dijit.form.Button" 
type="submit"
onClick="sendRuleForm('requestSubmitForm', 'resultDiv', 'RequestSubmit.action'); /* NOTE */ return false;">Submit</button>

关于java - Dojo ajax 调用在 Java 代码完成之前返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072896/

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