【问题标题】:From javascript call play 2.1 controller function that returns json data object从返回 json 数据对象的 javascript 调用 play 2.1 控制器函数
【发布时间】:2013-03-29 02:30:57
【问题描述】:

如何让 play 2.1 控制器函数执行捕获的外部 url 并将 json 数据对象返回给 javascript。

  1. 首先 InputStream 没有打开外部 url。错误提示没有协议
  2. play 不喜欢 JSONObject 作为返回值。

代码正在进行中 -

Javascript

$.ajax({
        url: "/documents/getjsontext/" + talksUrl ,
        type: 'GET',
        data: "",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function(data){ do_this(data);},
        error: function () {alert("Error in Ajax Call");}
    });

Route- /documents/acontext/:jsonurl controllers.Class.acontext(jsonurl: String)

public static JSONObject acontext(String jsonurl) {

    InputStream is = new URL(jsonurl).openStream();

    try {
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
      String jsonText = readAll(rd);
      JSONObject json = new JSONObject(jsonText);
      return json;
    } finally {
      is.close();
    }
}

【问题讨论】:

标签: javascript jquery json playframework playframework-2.0


【解决方案1】:

首先你需要添加一个 JsRoutes 类。我将其命名为“myJsRoutes”

public class CommonController extends Controller{

    public static Result javascriptRoutes() {
        response().setContentType("text/javascript");
        return ok(
            Routes.javascriptRouter("myJsRoutes",
                routes.javascript.Controller_name.function()
                    );
      }
}

现在您的 js 路由已定义。并且“myJsRoutes”可以进一步用于在您的 scala 文件中调用:

myJsRoutes.controllers.Controller_name.function_name().ajax({
 //your ajax handlers here
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2014-11-12
    • 2011-01-20
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多