0

如何让 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();
    }
}
4

1 回答 1

0

首先你需要添加一个 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
});
于 2013-08-19T12:03:23.587 回答