因此,我之前已经成功获得了工作的Ajax请求,但是我始终必须使用一种表单,然后在提交末尾返回false,以使它不会刷新页面。
最近我也将JavaScript移到了一个单独的文件中,这导致我的@命令失败。因此,我是否不应该将我的网址设置为我的路线?
HTML:
<button id="saveAsDefaultButton">Save as default</button>
Playframework 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;
});
我肯定有办法做到这一点,我只是找不到运气。任何帮助大加赞赏。
对于这项工作,您应该继续使用javascriptRoutes
它,因为它会根据routes.conf生成正确的JS路径。您将在Zentask
示例中找到用法示例
无论如何,现在您可以通过将更url
改为来修复AJAX调用
url : '@routes.Application.saveDefaultPhoneForUser()',
这种方法要求将整个JS放在模板中,这是错误的。可以甚至应该将其移动到单独的JS文件中,并使其成为可能,您需要使用javascriptRoutes。
更多…
javascriptRoutes 尚未 在官方文档中描述,但这里是逐步的介绍。尽管描述看起来很复杂,但 实际上
使用这种方式会带来很多好处。
首先,您需要在conf/routes
文件中创建通用路由:
GET /item/:id controllers.Application.getItem(id: Long)
POST /item/new controllers.Application.newItem
PUT /item/:id controllers.Application.updateItem(id: Long)
当然,您至少需要在Application
控制器中创建以下三个动作:
getItem(Long id){ ... }
newItem() { ... }
updateItem(Long id) { ... }
Application
控制器中javascriptRoutes()
在该操作中,您将指向文件中的 现有 路由conf/routes
public static Result javascriptRoutes() {
response().setContentType("text/javascript");
return ok(
Routes.javascriptRouter("myJsRoutes",
routes.javascript.Application.getItem(),
routes.javascript.Application.newItem(),
routes.javascript.Application.updateItem(),
//inside somepackage
controllers.somepackage.routes.javascript.Application.updateItem()
)
);
}
注意: 请勿在方括号中设置任何参数。
javascriptRoutes
行动路线并将其包含在模板中路线 conf/routes
GET /javascriptRoutes controllers.Application.javascriptRoutes
<head>
部分检视/views/main.scala.html
<script type="text/javascript" src='@routes.Application.javascriptRoutes()'></script>
从现在开始,您可以使用JS中的路由来获取正确的路径,而无需指定url
and type
。举个例子代替:
$('.getAjaxForThisContainer').click(function(e) {
var idToGet = $("#someField").val();
$.ajax({
type : 'GET',
url : '@routes.Application.getItem()',
data : {
id: idToGet
},
success : function(data) {
// ... some code on success
}
});
return false;
});
您可以使用简化版本(myJsRoutes
从第2点开始):
myJsRoutes.controllers.Application.getItem(idToGet).ajax({
success : function(data) { ... some code ... }
});
要么
myJsRoutes.controllers.Application.newItem().ajax({
success : function(data) { ... some code ... }
});
等等…
type: "POST"
-JS路由器将根据conf/routes
规则使用正确的方法id
将记录(或其他参数)设置为GET
或PUT
(或其他方法)routes-like
路线:
GET /some/:a/:b/:c controllers.Application.getABC(a: String, b: Integer, c: String)
JS:
myJsRoutes.controllers.Application.getABC("a", 1, "b" ).ajax({});
所以我实际上已经阅读了关于这个的stackoverflow问题,但是它们对于使用最新版本的wordpress来说有点太老了。 我的最终目标是提交我的表单中的一些数据到数据库,但现在ajax响应对我不起作用。在WP中的自定义页面加载中,将加载所有代码,以便所有函数都应正常工作。所有这些都在PHP文件中,为什么使用echo来创建JS脚本。这是我代码的重要部分 使用WP的当前版本,所以变量ajaxurl
问题内容: 如何使用jQuery明确提出AJAX HTTPS GET请求?我正在尝试执行以下操作。在https页面上,我有一行代码,但是出现以下错误 如果相对资源来自https页面,为什么AJAX调用会尝试使用HTTP协议访问页面?如果$ .get(url)方法默认执行此操作,那么我如何使用jQuery进行显式的HTTPS GET请求?在http://forum.jquery.com/topic/
问题内容: 我试图在单击按钮后禁用它。我努力了: 但该按钮并未被禁用。当我删除 按钮被禁用。 虽然这没有按预期工作,但我认为代码顺序是正确的。任何帮助将不胜感激。 问题答案: 放入成功函数: 这将确保 在 加载数据 后将 disable设置为false 。当前,您在同一单击功能(即同时)中禁用和启用按钮。
第一次: Hackerrank抛出错误,因为不是函数。我还尝试了和,但都无济于事。 我尝试了:
问题内容: 这是根据提供的示例验证geoJSON的代码: 我正在尝试使用以下代码进行验证: 在此,我提出实际要求: 我在Chrome控制台中收到此错误: 标题 这是与请求相关的数据: 问题答案: 您不应该将其设置为请求标头,而是响应标头。 您可以从响应中看到服务器将接受哪些请求标头: 错误消息告诉您: 似乎也可能不接受。
问题内容: 我试图在带有Razor的MVC 4中使用$ .ajax发出AJAX请求。我不确定如何实现它。 使用此视频,我能够成功进行返回数据的链接驱动的调用,但是我似乎无法在jquery函数中执行相同的操作。我似乎找不到如何执行此操作的任何基本示例。这就是我正在使用的: HomeController.cs View.cshtml 问题答案: 您只需要使其成为一个。另外,如果您使用的是Ajax PO