在jquery ajax调用

时间:2015-05-12 03:57:25

标签: javascript jquery ajax

我有一个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数据集刷新页面。

但它没有显示数据?我做错了什么?

或者有没有更好的解决方案来实现这一目标?

欢迎任何建议。

由于

1 个答案:

答案 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
}