gpt4 book ai didi

javascript - 单击取消按钮时无法停止执行

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

我正在struts2中使用ajax处理页面。当我单击确认框的取消按钮时,我无法停止执行。

我在 javascript 和 jsp 中添加了 return 语句。

var xmlHttp;
function ajaxEditFunctionCall() {
var URL = "ProjectName/refreshVoucher.action";
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange = showMessage;

xmlHttp.open("GET", URL, true);
xmlHttp.send(null);
}

function showMessage() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var r = confirm(xmlHttp.responseText);
if (r) {
return true;
} else {
return false;
}
}
}
}

JSP文件

<td><s:submit value="Cancel" cssClass="submitBtn" onclick="return ajaxEditFunctionCall();" /></td>

Struts.xml

<action name="refreshVoucher" class="com.action.Action" method="loadAdmin">
<result name="success">/WEB-INF/jsp/sample.jsp</result>
</action>

最佳答案

您的return showMessage()中的声明在ajaxEditFunctionCall()之后很长时间执行已完成,因为 ajax 是异步的。建议的解决方案是始终在 onclick 中返回 false 。在 ajax 回调中,检查响应并根据需要使用 Javascript 提交表单:

function ajaxEditFunctionCall() {
...
...
return false;
}

function showMessage() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var r = confirm(xmlHttp.responseText);
if (r) {
document.forms["my_form_name"].submit();
}
}
}
}

关于javascript - 单击取消按钮时无法停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142135/

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