我有一个jsp页面,显示学生的详细信息。根据学生选择从更改事件的下拉框中,将触发并检索学生的最小和最大分数。
<form name="listBean">
<c:forEach var="Item" items="${listBean.nameList}" varStatus="status">
<input type="number"name="nameList<c:outvalue='[${status.index}]'/>.initialMarks"/>
<input type="number" name="nameList<c:out value='[${status.index}]'/>.finalMarks"/>
<input type="submit" value="submit" id="submit" />
MinMarks:<c:out value="${Item.minMarks}"/></c:if>
MaxMarks:<c:out value="${Item.maxMarks}"/></c:if>
</c:forEach>
</form>
检索后,更新的数据将存储到bean中。使用jquery.ajax()方法处理服务器请求
function onChange() {
jQuery('form').each(function() {
jQuery.ajax({
url: "http://localhost:9001/submitStudent.do?requestType=auto",
data: $('form').serialize(),
type: 'POST'
});
location.reload();
});
}
一旦服务器响应成功,我将重新加载页面,以便在ajax调用期间使用bean数据集刷新页面。
但它没有显示数据?我做错了什么?
或者有没有更好的解决方案来实现这一目标?
欢迎任何建议。
由于
答案 0 :(得分:0)
看起来您在发送 AJAX请求后立即重新加载页面,可能是在服务器收到并处理它之前。
您可以将ajax请求存储在数组中,只有在使用jquery的when()
完成所有请求后才重新加载页面。
function onChange() {
var requests = [];
jQuery('form').each(function() {
requests.push(jQuery.ajax({
url: "http://localhost:9001/submitStudent.do?requestType=auto",
data: $('form').serialize(),
type: 'POST'
}));
});
jQuery.when.apply(jQuery, requests).then(location.reload, errHandler);
}
function errHandler (err) {
// handle any errors
}