2016-01-04 23 views
0

播放框架版本2.2.6玩!框架檢索到的字符串,這是一個空

jQuery的

$('#fridgeSearchInputField').keyup(function() { 

var $text = $(this).val(); 

    $.ajax({ 
     type: 'GET', 
     url: '@routes.controllers.Application.ajaxAutocomplete()', 
     data: $text, 
     success: function (data) { 
      // success result 
     } 

    }); 
}); 

routes文件中Applicati

GET  /:ingredientName   controllers.Application.ajaxAutocomplete(ingredientName: String) 

方法在控制器

public static Result ajaxAutocomplete(String ingredientName){ 
    String s = request().body().asText(); //I guess something here is wrong 
    System.out.println(s); 
    return ok(""); 
} 

的問題是,當我打印小號變量在遊戲控制檯它打印出。我的代碼有什麼問題?如何通過請求從輸入字段獲取文本以便稍後使用它?謝謝

+0

在您的Javascript中,您生成的網址爲「@ routes.controllers.Application.ajaxAutocomplete()」,即沒有任何成分名稱。我最近沒有做過任何Play框架,但不應該提供一個參數嗎?此外,你是否嘗試過debbuging並且正在研究request().body()'它看起來像什麼? –

+0

@Gaël當我寫請求()。toString()它返回我想要的,但是這樣'GET /@routes.controllers.Application.ajaxAutocomplete()?d GET /@routes.controllers.Application.ajaxAutocomplete()?di '等 –

+1

您正在發送獲取請求;它甚至*有*身體?像普通發送參數。不相關的,但IMO'$'前綴應該保留用於實際上與jQuery相關的東西,而不是文本字符串。 –

回答

0

我找到了解決方案!

所以我改變了我的文件了一下,一切正常。可能這不是最好的算法,但它的工作原理!

final String request; 
    String[] requestArray; 
    try { 

     request = request().toString(); 
     requestArray = request.split("\\?", 2); 
     String userRequest = requestArray[1]; 
     System.out.println(userRequest); 


     return ok(); 


    } catch (IndexOutOfBoundsException e) { 
     e.printStackTrace(); 
    } 


    return ok(); 
相關問題