我之前已经成功地使用过AJAX请求,但是我一直需要使用一个表单,然后在提交结束时执行return false以防止页面刷新。
最近我还将我的JavaScript代码移到了一个独立的文件中,这导致我的@命令失败了。因此,我不知道如何将我的URL设置为我的路由?
HTML:
<button id="saveAsDefaultButton">Save as default</button>
Play框架Java代码:
public static Result saveDefaultPhoneForUser(String handset) {
User currentUser = User.findByName(session("name"));
currentUser.lastControlledHandset = theHandset;
currentUser.save();
return ok();
}
路由:
POST / controllers.Application.saveDefaultPhoneForUser(handset : String)
JavaScript:
$('#saveAsDefaultButton').click(function(evt) {
$('#errors').hide();
$.ajax({
type : 'POST',
url : "controllers.Application.saveDefaultPhoneForUser",
data : $('#controlledPhone option:selected').text(),
dataType : "text",
success : function(data) {
//setError('Call succedded');
//$('#test1').attr("src", data)
},
error : function(data) {
setError('Make call failed');
}
});
return false;
});
我相信有一种方法可以做到这一点,但我找不到任何东西。
url : '@routes.Application.getItem()'
的 ajax 调用在理论上是否可行。我在这里尝试了一下,但是 Play 报错说缺少参数。我之所以问这个问题,是因为我想以类似于 这里 的方式将其与 jqGrid 结合起来。 - Thomas