从Ext / Java Application中的JSONP请求获取响应文本

时间:2014-02-19 23:25:11

标签: java javascript json extjs jsonp

我正在尝试将Java REST服务连接到ExtJs JSONP请求,但即使java方法执行,我也无法获得响应测试。这就是我想要的:

Java代码:

@Path("/hello")
public class Hello {

      @GET
      @Produces("text/javascript") // have also tried application/json
      public String sayJsonHello(@QueryParam("_dc") String dcIdentifier, @QueryParam("callback") String callback) {
          System.out.println(callback);
          callback += "({\"success\":true, \"msj\":" + "\"" + "Exitoooo!" + "\" });";
          System.out.println(callback);
        return callback;
      }

}

ExtJs代码:

    Ext.data.JsonP.request({
        url: "http://10.1.50.66:7001/Simulador/webresources/hello",
        params: {
        },
        callback: function (response) {
            console.log(response); //true
            console.log(response.result); //undefined
            console.log(response.responseText); //undefined
            console.log(response.success); // undefined
            if (response.success === true) {
                Ext.Msg.alert('Link Shortened', response.msj, Ext.emptyFn);
            } else { // entering here :( why ?
                Ext.Msg.alert('Error', response.msj, Ext.emptyFn);
            }
        }
    });

响应打印为true,其他一切未定义:(

回调看起来像这个Ext.data.JsonP.callback1({"success":true, "msj":"exito"})

任何想法可能出错?

1 个答案:

答案 0 :(得分:0)

好的,这对我有用:

    Ext.data.JsonP.request({
        url: "http://10.1.50.66:7001/Simulador/webresources/hello",
        callbackKey: 'callback1',
        params: {
        },
        success : function(response) {
            console.log("Spiffing, everything worked");
            // success property
            console.log(response.success);
            // result property
            console.log(response.result);
            console.log(response.msj);
         },
         failure: function(response) {
              console.log(response);
              Ext.Msg.alert('Error', 'Please try again.', Ext.emptyFn);
          }
    });