2016-04-25 4 views
0

Я использую ajax с javascript, чтобы сделать отмену или отправить действие. Когда я нажимаю ссылку «Отмена», на этой странице нет изменений, и мне нужно обновить всю страницу, чтобы увидеть измененный статус. И ничего не происходит, когда вы нажимаете ссылку на корабль, даже обновляйте всю страницу. Мой контроллер и 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"); 
} 

Может кто-нибудь помочь мне решить эту проблему? Благодаря!!

ответ

0

Хмм, чтобы проверить реакцию я всегда использую:

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

Возможно, вы не получаете правильный статус на ваш ответ?

+0

hmm попробовал, но все еще не изменился ..>< – user5516371