2013-10-17 40 views
0

我在寫一個servlet,它將接受來自AJAX請求的POST數據。String string = request.getParameter(「data」)爲空

下面是我從客戶端發送代碼:

$.ajax({ 
      type: "POST", 
      url: "urlservlet", 
      data: "{type:'" + "country" + 
      "', country:'" + $('#country').val() + 
      "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(response) { 

      } 


這是servlet代碼:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
    string test = request.getParameter("type"); 
} 

但事實是我總是等於null的類型。我不知道爲什麼。

請幫助我。

+0

您的標題是'getP(data)',而您的代碼是'getP(type)'。什麼是實際問題? – SudoRahul

回答

5

您正在向請求主體寫入JSON並期待請求參數。從javadoc

返回請求參數爲字符串,或者如果 參數不存在空值。請求參數是與請求一起發送的額外信息 。 對於HTTP servlet,參數包含在 查詢字符串或發佈的表單數據中。

您尚未發佈表單數據,也沒有查詢字符串。

你想要的是用HtppServletRequest#getInputStream()讀取HTTP請求體並解析JSON來提取你的元素。

+0

哦,好吧。請詳細說明。請。 :) –

+0

@pepsi詳細闡述哪些主題?在我的答案中有關鍵字可以幫助你找到你想要的。 –

+0

謝謝你,感謝你的時間。只是詢問一個示例代碼。因爲我對java很新穎。:) –

2

問題是因爲@Sotirios描述。但是,我會通過在服務器端使用Java REST框架(如RESTEasy,Spring MVCRestlet)來解決此問題。最好使用抽象,以便專注於業務邏輯,而不是Servlet API的低級細節。

和一個JSON串行器/解串器,如Jackson,以避免處理解析JSON的低級細節。傑克遜及其替代品可以與我提到的REST框架無縫集成。

我喜歡很好的抽象。

相關問題