簡體   English   中英

Play Framework 2.1無法處理來自控制器的JSON POST請求

[英]Play Framework 2.1 Cannot handle JSON POST request from controller

我正在嘗試使用播放框架2.1(java)實現一些簡單操作:

通過jquery發布JSON數據,然后從控制器中檢索它。

您能告訴我我哪里錯了嗎?

它從javascript調用開始:

var object = new Object();

object.title = "Hamlet";
object.author = "Bill";

var jsonData = JSON.parse(JSON.stringify(object));
jsRoutes.controllers.Application.update().ajax({
    type : 'POST',
    dataType : 'json',
    data : jsonData,
    success : function(data) {
        // I get the success
    },
    error : function(data) {
        alert('error');
    }
});

數據似乎已正確發布:Firebug控制台:

標頭:

Response Headers
Content-Length  2
Content-Type    text/plain; charset=utf-8
Request Headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate

...參數

Parametersapplication/x-www-form-urlencoded
title   Hamlet
author  Bill
Source
title=Hamlet&Author=Bill

它在這里路由:

POST    /update       controllers.Application.update()

這是應用程序控制器:

@BodyParser.Of(BodyParser.Json.class)
public static Result update() {
    JsonNode json = request().body().asJson();

    if(json == null){
        return badRequest("empty json"); // PROBLEM: THE JSON IS ALWAYS NULL
    }
    return ok("{}");
}

我得到的問題是我無法從請求中檢索參數。 如果我打印出request()似乎是空的:

DefaultRequestBody(None,None,None,None,None,None,true)

看到我錯了嗎? 我如何正確獲取JSON?

提前致謝

我有完全一樣的問題。 除了dataType ,還必須設置contentType ,如原始發布者建議的那樣:

var jsonMsg = JSON.stringify(msg);
jsRoutes.controllers.Application.sendJson().ajax({
    type : 'POST',
    dataType : 'json',
    contentType : 'application/json; charset=utf-8',
    data : jsonMsg
});

這可以幫助您本示例演示如何逐步實現Ajax播放播放2.x:如何使用通用按鈕發出AJAX請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM