2011-08-23 205 views
1

我有以下的javascript代碼:如何在servlet中獲取jQuery JSON請求參數?

var data = {message:"Hi"} 

var sendJson = function(){ 
    alert(data); 
    $.ajax({ 
     url:"./jsonTest", 
     data: data, 
     contentType:"application/json", 
     type:"post", 
     dataType:"json" 
    }).success(function(reply) { 
     alert("successful"); 
    }); 
} 

我如何獲取我的servlet的JSON對象?

我以前嘗試使用

request.getParameter("data") 

得到它,並試圖將其轉換成一個JSONObject,但我一直得到null

回答

0

嘗試下面的行。數據只是javascript變量,但jquery會將消息成員放在URL params中而不是數據中。

request.getParameter("message"); 
+0

我仍然得到空:( – Kebs

0

萬一data是對象將被變換到請求參數字符串等

pameterName1 =值1 & pameterName2 =值2

並且可以通過使用

得到它

request.getParameter("pameterName1");

+0

我嘗試過了,我仍然得到空。我需要在服務器端啓用一些東西嗎? – Kebs

+0

似乎你使用了不恰當的'content-type'參數。我剛剛評論過'contentType:「application/json」'和參數傳遞給servlet。我認爲最好使用$ .get()或$ .post()jQuery函數 – Alenka

0

您可能希望查看構建在基本Servlet API基礎上的JAX-RS容器(澤西島),但是爲JSON獲取數據綁定更方便。

但是,如果您必須使用原始Servlet API,那麼POST內容將通過請求對象可用;獲取InputStream,並使用像Jackson這樣的JSON庫綁定到對象:

MyBean bean = new ObjectMapper()。readValue(httpRequest.getInputStream(),MyBean.class);

,同樣,如果你需要返回一個JSON對象,反過來做:

objectMapper.writeValue(httpResponse.getOutputStream(),resultObject);

1

@Kebs,

如果這沒有想出..你可以找到答案here :)

+0

非常感謝你:)我會盡快嘗試。 :) – Kebs