为什么 ajax 没有部分刷新我的页面

Why the ajax didn't partly refresh my page?

本文关键字:刷新 我的 ajax 为什么      更新时间:2023-09-26

我正在使用带有javascript的ajax来执行取消或发布操作。当我单击取消链接时,此页面没有变化,我需要刷新整个页面才能看到更改的状态。单击船舶链接时没有任何反应,甚至刷新整个页面。我的 jsp 和控制器代码如下所示:

.JSP:

<script>
    var xmlHttp;
    xmlHttp = GetXmlHttpObject();
    function GetXmlHttpObject()
    {
        var xmlHttp = null;
        try
        {
            // Firefox, Opera 8.0+, Safari
            xmlHttp = new XMLHttpRequest();
        } catch (e)
        {
            // Internet Explorer
            try
            {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e)
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        return xmlHttp;
    }
    function cancelOrder(orderId, rowID){
        if (xmlHttp == null)
        {
            alert("Your browser does not support AJAX!");
            return;
        }
        var query = "action=cancel&order=" + orderId;
        /* alert(orderId); */
        xmlHttp.onreadystatechange = function stateChanged()
        {
            if (xmlHttp.readyState == 4)
            {
                var status = document.getElementById(rowID);
                alert(status.innerHTML); 
                status.innerHTML = "Canceled";
            }
        };
        xmlHttp.open("GET", "manageUserAccount.htm?"+query, true);
        /* xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); */
        xmlHttp.send(null);
        return false; 
        /* var row = document.getElementById(rowID);
        row.parentNode.removeChild(row); */
    }
function shipOrder(orderId, rowID){
        if (xmlHttp == null)
        {
            alert("Your browser does not support AJAX!");
            return;
        }
        var query = "action=ship&order=" + orderId;
        /* alert(orderId); */
        xmlHttp.onreadystatechange = function stateChanged()
        {
            if (xmlHttp.readyState == 4 && xmlhttp.status==200)
            {
                var status = document.getElementById(rowID);
                alert(status.innerHTML); 
                status.innerHTML = "Canceled";
            }
        };
        xmlHttp.open("GET", "manageUserAccount.htm?"+query, true);
        /* xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); */
        xmlHttp.send(null);
        return false; 
        /* var row = document.getElementById(rowID);
        row.parentNode.removeChild(row); */
    }
</script>
<c:forEach var="order" items="${user.orders}" varStatus="vs">
        <tr>
                <td>${order.id}</td>
                <td>${order.createDate}</td>
                <td>${order.status}</td>
                <td><a href="manageUserAccount.htm?action=viewDetails&orderId=${order.id}">View Details</a></td>
                <td><a onclick = "shipOrder(${order.id}, ${vs.index})">Ship the order</a><br><a onclick = "cancelOrder(${order.id}, ${vs.index})">Cancel the order</a></td>
        </tr>
</c:forEach>

控制器:

if(action.equals("cancel")){
        OrderDAO orderDao = new OrderDAO();
        System.out.println(request.getParameter("order"));
        Long orderId = Long.parseLong(request.getParameter("order"));
        Order order = orderDao.get(orderId);
        order.setStatus("Canceled");
        orderDao.save(order);
        JSONObject obj = new JSONObject();
        obj.put("cancel", "Canceled");
}
if(action.equals("ship")){
        OrderDAO orderDao = new OrderDAO();
        System.out.println(request.getParameter("ship"));
        Long orderId = Long.parseLong(request.getParameter("ship"));
        Order order = orderDao.get(orderId);
        order.setStatus("Shipped");
        orderDao.save(order);
        JSONObject obj = new JSONObject();
        obj.put("ship", "Shipped");
}

谁能帮我解决这个问题?谢谢!!

嗯,为了检查我总是使用的响应:

    if (xmlhttp.readyState==4 && xmlhttp.status==200)

也许您的回复状态不正确?