2016-04-25 13 views
0

javascriptでajaxを使用して、キャンセルまたは発送の操作を行っています。キャンセルリンクをクリックすると、このページに変更はありません。ページ全体を更新して、変更されたステータスを確認する必要があります。船のリンクをクリックしても何も起きず、ページ全体を更新することもできます。以下のように私のJSPおよびコントローラコードショー:なぜajaxがページを一部更新しなかったのですか?

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) 

あなたの応答に右のステータスを取得されていません。

答えて

0

うーん、私はいつも使用して応答をチェックするには?

+0

hmm試しましたが、まだ変更されていません。>< – user5516371

関連する問題