【发布时间】:2016-04-08 05:30:41
【问题描述】:
播放框架版本为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
}
});
});
路线文件
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("");
}
问题是当我在游戏控制台中打印 s 变量时,它会打印出 null。我的代码有什么问题?以及如何通过请求从输入字段中获取文本以便以后使用?谢谢
【问题讨论】:
-
在您的 Javascript 中,您生成的 URL
@routes.controllers.Application.ajaxAutocomplete(),即没有任何成分名称。我最近没有做过任何 Play 框架,但你不应该提供一个论点吗?此外,您是否尝试过调试并查看request().body()它的外观? -
@Gaël 当我写 request().toString() 它返回我想要的但像这样
GET /@routes.controllers.Application.ajaxAutocomplete()?d GET /@routes.controllers.Application.ajaxAutocomplete()?di等等 -
您正在发送一个获取请求;它甚至有一个身体吗?像往常一样发送参数。不相关,但 IMO
$前缀应该保留给实际上与 jQuery 相关的东西,而不是文本字符串。 -
正如@DaveNewton 所说,
GET请求没有正文。当您将数据参数交给jQuery.ajax时,它会将其作为查询字符串附加。但是,Play 不会将查询字符串视为正文。所以你看到的是预期的输出。 -
看看这个post。
标签: java ajax playframework playframework-2.2