我在struts2中使用ajax处理页面。当我点击确认框的取消按钮时,我无法停止执行。
我在javascript中添加了return语句以及jsp。
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>
答案 0 :(得分:1)
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();
}
}
}
}