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 に答える