0
我正嘗試向某個JSON數據的後端發送POST請求。從前端的調用看起來是這樣的:無法從使用Play Framework的Ajax請求接收POST正文
function register() {
var user = $("#form_reg_username").val();
var pass = $("#form_reg_password").val();
var referal = $("#form_reg_referal").val();
var postbody = {};
var url = "http://" + location.host + "/api/admin/register";
postbody.username = user;
postbody.password = pass;
postbody.referal = referal;
var jsonbody = JSON.stringify(postbody);
console.log(jsonbody);
$.ajax({
type: "POST",
url: url,
data: jsonbody,
dataType: "json",
success: registerHandler()
});
}
生成的日誌看起來是這樣的:
{"username":"jakob","password":"11111","referal":"urgotislove"}
這很好。
下面是我如何處理在後端請求的開始(我用打2.4)
public Result adminRegister() {
// Generate JSON from postbody
ObjectNode json = Json.newObject();
Logger.info("Body: " + request().body().asText());
JsonNode body = request().body().asJson();
String username = body.get("username").asText();
String password = body.get("password").asText();
String referal = body.get("referal").asText();
...
}
看着我的應用程序日誌信息日誌看起來是這樣的:
[info] application - Body: null
然後,我嘗試獲取json值的第一行中得到一個Nullpointer異常。
因此,由於某些原因,POST正文似乎沒有被正確接收。
感謝您提前提供任何幫助。
你不需要'stringify'您向服務器發送的內容。只需在您的Ajax請求中發送'postbody'。另外,如果您使用瀏覽器開發人員工具檢查發送到服務器的Ajax請求,您是否可以確認發送的請求是否正確? – c4k
據我所見,請求看起來不錯。我也只是試圖發送一個包含有效載荷的POST請求,這也會導致相同的應用程序日誌,所以問題與後端一樣。 –