0

我正在尝试使用 Play!2.6 框架的嵌入式路由器,用于我的 Javascript 路由,如其文档中所示。我正在使用 Scala 版本并尝试通过 AJAX/jQuery 提交表单。

我已将它插入到我的 main.scala.html 模板中,该模板装​​饰了每个返回的脚本:

@helper.javascriptRouter("jsRoutes")(
        routes.javascript.DashboardController.postNewProject,
        routes.javascript.DashboardController.getSliderResponse
    )

这是具有这些方法的控制器:

@Singleton
class DashboardController @Inject()(cc: ControllerComponents) extends AbstractController(cc) {

     def postNewProject() = Action{ ... }

     def getSliderResponse(str:String)= Action { ... }
}

我已经将它们连接起来Routes.conf如下

POST    /dashboard/projects    controllers.DashboardController.postNewProject
GET     /dashboard/projects/sliderSubmitResponse/:response   controllers.DashboardController.getSliderResponse(response: String)

但是当我通过 AJAX 调用加载它时 - 我的控制台告诉我我收到了 404 错误。这是 AJAX:

$(document).on('submit', '.sliderForms', function (event) {

    event.preventDefault();
    var content = $('#projectTitleInputBox').val();
    var content2 = $('#initNoteBox').val();
    window.alert("Made it here at least" + content + ' ' + content2);

    jsRoutes.controllers.DashboardController.postNewProject().ajax({
        success: loadDoc('jsRoutes.controllers.DashboardController.getSliderResponse("newProjSuccess")', 'createNewProjectDiv'),
        fail: loadDoc('jsRoutes.controllers.DashboardController.getSliderResponse("newProjFail")', 'createNewProjectDiv')
    })

});

我收到 404 错误,因为它正在尝试检索此 URL:

http://localhost:9000/dashboard/jsRoutes.controllers.DashboardController.getSliderResponse("newProjSuccess")

http://localhost:9000/dashboard/jsRoutes.controllers.DashboardController.getSliderResponse("newProjFail")

所以我认为我的路由不正确,但不确定在哪里。

4

1 回答 1

0

啊,你不能在 AJAX 请求中使用反向路由。我需要改变这个:

jsRoutes.controllers.DashboardController.postNewProject().ajax({
        success: loadDoc('jsRoutes.controllers.DashboardController.getSliderResponse("newProjSuccess")', 'createNewProjectDiv'),
        fail: loadDoc('jsRoutes.controllers.DashboardController.getSliderResponse("newProjFail")', 'createNewProjectDiv')
    })

jsRoutes.controllers.DashboardController.postNewProject().ajax({
        success: loadDoc('/url/ofMethod/asAppears/inMy/conf.Routes', 'createNewProjectDiv'),
        fail: loadDoc('/url/ofMethod/asAppears/inMy/conf.Routes', 'createNewProjectDiv')
    })
于 2017-08-02T20:43:10.433 回答