2015-06-12 53 views
0

的doGet設置項READSTATE新的價值,並將其發送回Ajax調用的JSON對象:如何使用ajax從servlet接收json對象?

PrintWriter out = null; 
      try { 
       out = resp.getWriter(); 

       Integer read = Integer.parseInt(req.getParameter("feedReadVal")); 

       Gson data = new Gson(); 
       JsonObject jsonObj = new JsonObject(); 
       Integer readState = null; 
       Item item = new Item(); 

       readState = 1; 
       item.setReadState(readState.byteValue()); 
       JsonElement element = data.toJsonTree(item); 

       jsonObj.add("read", element); 
       out.print(jsonObj); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       } 

呼叫: System.out.println("JSON OBJECT: " + jsonObj.toString());顯示這樣的事情JSON OBJECT: {"read":{"readState":1}}但是當我試圖讓在成功函數錯誤數據thrown.My jQuery:

var data = "feedReadVal=" + itemRead + "&feedItemId=" + feedItemId 
     + "&action=" + 'read'; 
$.ajax({ 
    type : "Get", 
    url : "FeedItemController", 
    data : data, 
    dataType : "json", 

    success : function(data, textStatus, jqXHR) { 
     alert(data.read.readState); 
    }, 
    error : function(jqXHR, textStatus, errorThrown) { 
     alert("Something really bad happened "); 
    } 

}).done(function() { 

}); 

我一直收到錯誤警報。

回答

0

除了打印,你需要將它寫入到流

變化out.print(jsonObj);

out.write(jsonObj.toString()); 
out.flush(); 
+0

沒有,同樣的錯誤警報 –

+0

我找到了解決方案,需要寫入流後刷新。 –

+0

哈哈,即將這麼說,很高興你找到了 –

相關問題