0

我正在尝试使用 Play 2.1/Scala 和 JQuery 获取 Ajax 请求。我跟着:http ://www.playframework.com/documentation/2.1.x/ScalaJavascriptRouting

使用正确的参数调用我的控制器。但是在 Javascript 中,成功和错误回调都会执行,并且所有参数都是未定义的。

模板:

@(param: String)(implicit req: RequestHeader)

@helper.javascriptRouter("jsRoutes")(
    routes.javascript.MyController.myMethod
)

@main("Welcome to Play 2.0") {...}

该模板中某处的 javascript 函数:

function myFunction(param1, param2, param3) {

    jsRoutes.controllers.MyController.myMethod(param1, param2, param3).ajax({
        success: new function(data, textStatus, jqXHR) {
            console.log("ajax success data: " + data);
            console.log("ajax success textStatus: " + textStatus);
            console.log("ajax success jqXHR: " + jqXHR);

        }, error: new function(jqXHR, textStatus, errorThrown) {
            console.log("ajax error xhr: " + jqXHR);
            console.log("ajax error textStatus: " + textStatus);
            console.log("ajax error errorThrown: " + errorThrown);

        }
    });

控制器:

def myMethod(param1:String, param2:String, param3:String) = Action { implicit request =>

    Ok(Json.obj({"key" -> "sdfsdfs"}))

 }

我对此进行了调试,我可以在浏览器的网络监视器中看到请求和响应,它们是 JSON 类型并包含正确的数据。

但这是我的回调的输出:

ajax success data: undefined localhost:9000/:101
ajax success textStatus: undefined localhost:9000/:102
ajax success jqXHR: undefined localhost:9000/:103
ajax error xhr: undefined localhost:9000/:106
ajax error textStatus: undefined localhost:9000/:107
ajax error errorThrown: undefined 

我不知道,我也看了这里Scala JavaScript Routing Play Framework并找不到原因。我也没有在服务器或浏览器中看到错误。

谢谢。

4

1 回答 1

1

我找到了!我在回调函数中使用了“new”。没有它:

success: function(data, textStatus, jqXHR) {//...
}, error: function(jqXHR, textStatus, errorThrown) {//...
}

它工作正常。

于 2013-08-21T10:26:42.413 回答