2015-11-03 39 views
4

這個servlet代碼,在這裏第一,我想發送返回消息(如果消息!= null)到Ajax的警報和第二個如果消息== null我想調用另一個jsp與列表傳遞給這個jsp。如何從AJAX向JSP發送調用?

if(message!=null){ 
       response.setContentType("text/plain"); 
       response.getWriter().write(message); 
      }else{ 
       JSONObject jobj = new JSONObject(); 
       String urlToRedirect = "SearchEmployee.jsp"; 
       jobj.put("url",urlToRedirect); 
       response.getWriter().write(jobj.toString()); 
       } 

在這裏,我無法理解如何調用這個JSP網址中的其他部分

$.ajax({ 
     type:"POST", 
     url:'../SearchEmployeeServlet', 

     data:$('#DisplayEmployeeListForm').serialize(),//$('form').serialize(); 
     success:function(msg){ 
      if(msg!=""){ 
       alert(msg); 
       window.location.reload(true); 
      }else{ 
       ....here i want to call 2nd jsp 

      } 

     } 
    }); 

回答

0

只是要在其他部分Ajax請求如同上面一樣。

$.ajax({url: "jsp url", success: function(result){ 

}}); 

查找更多信息here

+0

「結果」的意思,有什麼servlet的回報,即URL或其他任何東西,因爲我無法理解,如果我在ajax的其他部分使用這個我在servlet中寫的東西。 –

+0

是的,這是正確的網址返回。 –

1

你可以只請求轉發服務器端,以避免需要在客戶端進行第二次請求:

request.getRequestDispatcher("SearchEmployee.jsp").forward(request, response); 

或者,您可以發送HTTP重定向響應,因此客戶端應自動處理重定向到第二個請求:

response.sendRedirect(response.encodeRedirectUrl("SearchEmployee.jsp")); 

請注意,您如何在JavaScript中處理這個問題取決於您期望從SearchEmployee.jsp收到的數據類型。例如,如果是XML和您已設置的響應內容類型text/xml jQuery將分析它,並傳給你一個XML DOM對象添加到您success功能:

success:function(msg) { 
    if (msg instanceof XMLDocument) { 
     // handle list 
    } else { 
     alert(msg); 
     window.location.reload(true); 
    } 
} 

如果你期待的HTML,這可能以字符串形式返回,所以您可以測試以查看返回的字符串是否以某些HTML開頭。例如,如果你的HTML將始終以<ul>標籤開始:

success:function(msg) { 
    if (msg.startsWith("<ul>")) { // note you may need to do msg = $.trim(msg) first 
     // handle list 
    } else { 
     alert(msg); 
     window.location.reload(true); 
    } 
} 

如果你不想自動轉發按照以上建議,你寧願與你目前的做法堅持下去,有你需要改變一些東西。

使用if(msg!="")success功能是壞,將返回true只要服務器不返回一個空應答(因此,在這兩種情況下,你會得到一個警報)。

做的第一件事就是到content-type頭添加到你的servlet代碼來表示你在第二種情況下返回JSON:

response.setContentType("application/json"); 
response.getWriter().write(jobj.toString()); 

現在,當jQuery的處理響應,它會嘗試解析它在調用success函數之前爲JSON。因此,你現在就可以測試你的成功功能的jQuery提供給您的說法是否是一個對象或一個字符串:

success:function(msg){ 
    if (typeof msg === "object") { 
     // you got the JSON response 
     $.ajax({ 
      url: msg.url, 
      // etc... 
     }); 
    } else { 
     // you got the plain text response 
     alert(msg); 
     window.location.reload(true); 
    } 
} 
+0

我已經嘗試....在警報[對象xml]打印 –

+0

@priyankaahire對不起,我不知道我理解那個評論。無論如何,我已經編輯了我的答案,以解釋如何按照您嘗試的方式進行操作。 – megaflop

+0

從servlet我想要2響應第一如果提醒其他jsp調用與列表..我無法理解如何做到這一點......你給我你自己的建議。我會試着用 –