2013-11-15 29 views
0

我在JSP做了一個表格說first.jspAjax和RequestDispatcher的工作不

<input type="radio" name="actionType" value="edit_notice" class="noticeaction">Edit 
    <input type="radio" name="actionType" value="delete_notice" class="noticeaction">Delete 
    <input type="radio" name="actionType" value="post_notice" class="noticeaction">Post Notice 
    <br/><br/><br/> 

    <input type="submit" name="reviewNoticeSubmit" value="Submit" id="reviewNoticeSubmit"> 

jQuery的在Ajax調用是:

else if(actionToPerform == "edit_notice") 
      { 
       var noticeId = $(".selectednotice").val(); 
       var param = "noticeId=" + noticeId; 

       jQuery.ajax({ 
        type:"POST", 
        url : "reviewnoticeaction/editnotice", 
        data : param, 
        beforeSend : function() { 

        }, 
        complete : function() { 

        }, 
        success : function(data) { 

        }, 
        error : function(xmlHttpRequest, textStatus, errorThrown) { 
         alert("Error occured. Unable to open editor"); 
        } 

       }); 

      } 

以下是servlet代碼得到來自數據庫的一些值和分配給屬性,我試圖將其轉發到另一個jsp頁面。它不工作。

request.setAttribute("firstData", editNoticeRs.getString("firstData")); 
        request.setAttribute("secondData", editNoticeRs.getDate("secondData")); 
        request.setAttribute("thirdData", editNoticeRs.getDate("thirdData")); 

RequestDispatcher rd = request.getRequestDispatcher("second.jsp"); 
    rd.forward(request, response); 

PS:在情況下,如果我不能也有可能轉發給另一個JSP得到的數值在同一個jsp頁面和訪問的價值?如果是的話如何?

+0

jQuery的'ajax'方法是HTTP返回JSON或字符串datat回到阿賈克斯成功處理程序客戶在自己的權利。它可以發送請求並接收響應。它收到的回覆與您目前正在瀏覽的瀏覽器頁面無關。 –

回答

0

您不需要從servlet調度到Ajax的JSP。只是在servlet中做所有事情都會更簡單。是的,在Ajax中,您可以讀取servlet的輸出。這就是你的成功函數中的「數據」變量。

success : function(data) { 
    alert(data); 
}, 

當然,如果你願意,你仍然可以從你的servlet發送到JSP。可能它不工作的原因是你對返回的輸出無所作爲。

+0

謝謝@developerwjk,我想知道如何在成功方法中設置變量「data」的值。我應該在servlet中做些什麼來獲取我想要獲取數據的值(目前我的數據變量是空的)。 – Arock

+0

我已經發布瞭如何從servlet返回數據的答案 – M4ver1k

0

如果你想從簡單的servlet調用

PrintWriter out=response.getWriter(); 
out.println("String Data to return"); 

,或者如果它是JSON

PrintWriter out=response.getWriter(); 
StringBuilder data = new StringBuilder() 
data.append("{"); 
data.append("'name':"); 
data.append("'arock',"); 
data.append("'Language':"); 
data.append("'Java'"); 
data.append("}"); 
out.println(data.toString());