【问题标题】:Post forms with coffescript/ ajax in play使用 coffescript/ajax 发布表单
【发布时间】:2015-05-05 01:54:42
【问题描述】:

我尝试提交一个带有coffeescript/ajax 的简单表单。但我做错了什么,无法弄清楚是什么。 我从一个创建问题的工作表单开始(没有 ajax),然后跟着Playframwork doc on javascript routing

首先我在我的应用程序控制器中创建了路由器资源:

def javascriptRoutes = Action { implicit request =>
  Ok(
    Routes.javascriptRouter("jsRoutes")(
      routes.javascript.Questions.create
    )
  ).as("text/javascript")
}

添加到路线中:

GET         /javascriptRoutes          controllers.Application.javascriptRoutes

添加到我的模板中:

<script type="text/javascript" src='@routes.Application.javascriptRoutes()'></script>

然后包括咖啡脚本:

$ ->
  $('#save').on "click", (e) ->
    jsRoutes.controllers.Questions.create.ajax
      data: $('#questionForm').serialize()
      success: (data) ->
        alert("success")
      error: (err) ->
        alert("error")

#save 指向一个链接,onclick 事件用于一个简单的警报。 $('#questionForm').serialize() 似乎也输出了正确的数据。

脚本什么都不做,我不知道如何使用 chrome javascript 调试器正确调试它,因为我不知道去哪里找。至少智能 告诉我 Questions.create 永远不会被调用。

编辑:感谢 Infinity,我注意到 chrome javascript 调试器抛出:

Uncaught TypeError: jsRoutes.controllers.Questions.create.ajax is not a function(anonymous function) @ save.coffee:3m.event.dispatch @ jquery.js:4641m.event.add.r.handle @ jquery.js:4309

【问题讨论】:

  • 检查网络选项卡以查看您的浏览器是否向Questions.create路由发送请求以及控制台选项卡中是否有任何错误
  • 你在控制台选项卡中显示:未捕获的类型错误:jsRoutes.controllers.Questions.create.ajax 不是函数(匿名函数)@ save.coffee:3m.event.dispatch @ jquery.js:4641m.event.add.r.handle@jquery.js:4309

标签: ajax forms playframework coffeescript


【解决方案1】:

感谢 Infinity 和新的控制台错误输入,我注意到了

jsRoutes.controllers.Questions.create.ajax

必须是

jsRoutes.controllers.Questions.create().ajax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多