[英]Reading JQuery data sent from Ajax in Java Servlet
這是我的Ajax代碼:
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}]
};
$.ajax({
url : "ships",
data : myJSONObject,
success : function(data){
GLOBAL.player.startShooting(data);
},
error : function(data) {
console.log("error:", data);
},
dataType : "json",
timeout : 30000,
type : "post"
});
這是我的Java Servlet代碼:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("im in PSOT");
System.out.println(request.getParameter("myJSONObject"));
StringBuilder sb = new StringBuilder();
BufferedReader br = request.getReader();
String str;
while( (str = br.readLine()) != null ){
sb.append(str);
}
System.out.println(sb.toString());
response.setContentType("application/json");
response.getWriter().write("{\"key\":\"hello\",\"key2\":\"world\"}");
}
Java servlet返回我的Hello World對象,但我無法讀取Java Servlet中的數據控制台打印出以下內容:
im in PSOT
null
最后一行是來自上一個println的空字符串。
我正在使用Tomcat 7
誰能告訴我我做錯了什么以及為什么我無法讀取Java Servlet中的數據_
參數名稱不是myJSONObject
。 那是JS變量名。 參數名稱是JSON對象中的所有根鍵。 例如
String bindings = request.getParameter("bindings");
// ...
您只需要進一步手動解析它。 您可以使用Google Gson 。
至於為什么Reader
沒有返回任何內容,那是因為請求體只能被讀取和解析一次 。 任何getParameter()
調用都會隱式執行此操作。 所以當你在 getReader()
getParameter()
之前調用getParameter()
,你將無法通過Reader
讀取請求體(同樣適用於其他方式!)。 但無論如何你根本不需要它。 只需使用帶有正確參數名稱的getParameter()
。
您只需要進一步手動解析它。 您可以使用Google Gson。
至於為什么Reader沒有返回任何內容,那是因為請求體只能被讀取和解析一次。 任何getParameter()調用都會隱式執行此操作。 所以當你在getReader()之前調用getParameter()時,你將無法通過Reader讀取請求體(同樣適用於其他方式!)。 但無論如何你根本不需要它。 只需使用帶有正確參數名稱的getParameter()即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.