Jquery 为什么';这不是工作-jsonp和休息轻松吗?

Jquery 为什么';这不是工作-jsonp和休息轻松吗?,jquery,jsonp,resteasy,Jquery,Jsonp,Resteasy,JS代码 我看到服务器收到了调用,但浏览器失败,出现“未捕获的语法错误:意外标识符” 感谢您的帮助。感谢您的时间。注意:这是在应用程序中执行此操作最糟糕的方法,您需要检查可能提供的框架支持。这只是演示如何添加jsonp支持 我不知道,放松点,我要在这里做一个大的猜测 @GET @POST @Path("/test/{param}") @Produces({MediaType.APPLICATION_JSON }) public String returnMessa

JS代码

我看到服务器收到了调用,但浏览器失败,出现“未捕获的语法错误:意外标识符”


感谢您的帮助。感谢您的时间。

注意:这是在应用程序中执行此操作最糟糕的方法,您需要检查可能提供的框架支持。这只是演示如何添加jsonp支持

我不知道,放松点,我要在这里做一个大的猜测

@GET
    @POST
    @Path("/test/{param}")
    @Produces({MediaType.APPLICATION_JSON })
    public String returnMessage(@PathParam("param") String msg) {
        System.out.println("~~~~~~~~~~~~~"+msg+"~~~~~~~~~~~~");
        return "HEllo "+msg;

    }
然后

实际上,您必须同时支持json和jsonp请求,因此您可能需要

$.getJSON("http://localhost:8080/gbsshop/rest/auth/test/xyz?callback=?", function (data) {
    alert(data.msg);
});
3.x版本中的Resteasy开箱即用:

如果您使用的是Jackson,Resteasy有一个可以打开的JSONP 添加提供程序 org.jboss.resteasy.plugins.providers.jackson.JacksonJsonpInterceptor (如果使用Jackson2提供程序,则使用Jackson2JsonpInterceptor)来 您的部署。如果响应的媒体类型是json和 如果给定回调查询参数,则响应将是javascript 具有回调所定义方法的方法调用的代码段 参数例如:

GET/resources/stuff?callback=processStuffResponse将生成此 答复:

processStuffResponse()这支持默认设置 jQuery的行为

您可以通过设置 callbackQueryParameter属性

然而,它似乎是由于

所以
foo({“foo”:“bar”}
被渲染而不是
foo({“foo”:“bar})

这会导致“未捕获的SyntaxError:意外标识符”错误

我已经提交了一个带有补丁的版本,希望它能进入下一个版本3.0.12


我知道这个问题已经很老了,但是当你搜索resteasy jsonp问题时,它会显示在Google的第一页上,所以我决定更新它,因为它是一个jsonp请求,响应的格式应该是
({})
,例如:
mycallback({msg:'mymessage})
callback方法的名称可以作为requestparameter使用
callback
真的吗?-我想是“某人”在后台处理。我认为您只需要从服务器发送json数据,而不必将其包装在回调函数中。这会使我的代码在服务器上看起来很难看。我是否误解了您的评论,或者您的意思是我应该返回-callbackName({result:“john”})-从我的返回消息功能?这不是不整洁吗?有没有更好的方法。我正在尝试你的建议。Thanks@Mustafa回调方法就是JSONP的工作方式。你甚至需要JSONP吗?如果你的前端和REST服务在同一个域上,你可以使用简单的旧JSONP。我正在尝试这个Arun的可能的副本。但是我非常喜欢c更精简的服务器端代码。还有其他建议吗?谢谢。@Arun我怀疑这是否可行。问题是框架可能会尝试使用类似JSON库的JSON库来转换字符串结果。上面提到的重复问题有更好的解决方案。Phil我也在检查。谢谢
@GET
@POST
@Path("/test/{param}")
@Produces({MediaType.APPLICATION_JSON })
public String returnMessage(@PathParam("param") String msg, @QueryParam("callback") String callback) {
    System.out.println("~~~~~~~~~~~~~"+msg+"~~~~~~~~~~~~");
     return callback + "({msg: \"" + msg + "\"})";
}
$.getJSON("http://localhost:8080/gbsshop/rest/auth/test/xyz?callback=?", function (data) {
    alert(data.msg);
});
@GET
@POST
@Path("/test/{param}")
@Produces({MediaType.APPLICATION_JSON })
public String returnMessage(@PathParam("param") String msg, @QueryParam("callback") String callback) {
    System.out.println("~~~~~~~~~~~~~"+msg+"~~~~~~~~~~~~");
    if (callback == null || callback == "") {
        return "{msg: \"" + msg + "\"}";
    } else {
        return callback + "({msg: \"" + msg + "\"})";
    }
}