2013-06-14 3 views
5

Basit bir şey elde etmek çalışıyorum gelen JSON POST isteği işlemez Can Framework 2.1 oynayın.oyun çerçevesinin 2.1 (java) kullanılarak, denetleyici

Bana nerede yanlış olduğumu söyleyebilir misiniz?

Bu bir javascript çağrısından başlar: Kundakçı konsolu::

Başlıkları:

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'); 
    } 
}); 

verileri doğru yayınlanacak görünüyor

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 

... Parametreler

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

O yolları:

@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("{}"); 
} 

Ve olsun sorun ben isteğinden benim parametrelerini alamıyor geçerli:

POST /update  controllers.Application.update() 

İşte Uygulama Kontrolörü olduğunu. Yanlış nerede

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

görüyor musun i yazdırırsanız isteği() boş görünüyor? JSON'u nasıl alabilirim?

Şimdiden teşekkürler

+1

çözüldü nasıl gösterir code'contentType: "uygulama/json; charset = utf-8", js çağrısında 'code'. – user2487754

+2

Sorunuzu kendiniz yanıtlayın, böylece sonraki 2 gün içinde doğru yanıt olarak işaretleyebilirsiniz – biesior

+0

ilgili soru (henüz cevaplanmadı): http://stackoverflow.com/questions/19941786/playframework-handling-post-reqeust – ses

cevap

5

Tam olarak aynı sorunu yaşadım. Orijinal afişi önerildiği gibi dataType yanında, yanı contentType belirlemek zorunda: Gerektiğinde `:

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

ilgili soru: http://stackoverflow.com/questions/19941786/playframework-handling-post-reqeust – ses