Jquery 这项服务有问题吗?

Jquery 这项服务有问题吗?,jquery,web-services,jsonp,getjson,jersey-2.0,Jquery,Web Services,Jsonp,Getjson,Jersey 2.0,我想构建一个能够发回JSONP 我的服务如下所示 @GET @Path("user/{id}") @Produces({"application/javascript", MediaType.APPLICATION_JSON}) @JSONP(callback= "eval",queryParam = "callback") public Response getUser(@PathParam("id") int id, @Context HttpHeaders headers ) {

我想构建一个能够发回
JSONP

我的服务如下所示

@GET
@Path("user/{id}")
@Produces({"application/javascript", MediaType.APPLICATION_JSON})
@JSONP(callback= "eval",queryParam = "callback")
public Response getUser(@PathParam("id") int id, @Context HttpHeaders headers
) {
    //for (MediaType mediaType : headers.getAcceptableMediaTypes()) {
    //    System.out.println(mediaType);
    //}

    User u = UserDao.instance.getModel().get(Integer.toString(id));
    Response res = Response.status(Response.Status.OK).entity(u).build();
    return res;

}
是这样吗?还是错了

当我使用Jquery访问服务时(我是Jquery atm的新手),我得到一个错误,下面是我用来访问服务的代码

  jQuery.ajax({
        type: "GET",
        url: "http://localhost:8084/simple-service/webapi/myresource/user/1",
        dataType: "jsonp",
        success: function(results) {
            alert("Success!");
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Error");
        }
    });
我做错什么了吗?我有两条不同的错误消息:

  • 来自firefox:“SyntaxError:missing;before语句”,行号为“1:1”。通过单击1:1,将出现一个弹出窗口,并显示以下
    {“id”:“1”,“name”:“Brittni”,“姓氏”:“North”}
  • form chrome: “Uncaught SyntaxError:意外标记:”,显示具有相同内容的相同firefox弹出窗口
似乎缺少回调函数的名称?:


你能帮我找出我做错了什么吗D谢谢你的帮助

好的,伙计们!我自己解决的,如果你感兴趣的话,这里是解决方案

如果您不在同一来源地时想要访问该服务,则以下是该服务的代码: 在响应上设置标题,另外添加
@Jsonp
注释

 @GET
    @Path("user/{id}")
    @Produces({"application/javascript", MediaType.APPLICATION_JSON})
    @JSONP(callback= JSONP.DEFAULT_CALLBACK,queryParam = JSONP.DEFAULT_QUERY)
    public Response getUser(@PathParam("id") int id, @Context HttpHeaders headers
    ) {
        User u = UserDao.instance.getModel().get(Integer.toString(id));
        Response res = Response.status(Response.Status.OK).entity(u).build();
        res.getHeaders().add("Access-Control-Allow-Origin", "*");
        res.getHeaders().add("Access-Control-Allow-Headers",
                "origin, content-type, accept, authorization");
        res.getHeaders().add("Access-Control-Allow-Credentials",
                "true");
        res.getHeaders().add("Access-Control-Allow-Methods",
                "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        return res;

    }
对于跨域调用,使用ajax请求中的内置标志。其他字段(如数据类型)将由jquery以智能方式自动填充

    jQuery.ajax({
        type: "GET",
        url: "http://localhost:8084/simple-service/webapi/myresource/user/" + e.data.id,
        crossDomain: true,
        success: function(results) {
            console.log("Success!");
            $this.trigger("populate", [results]);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Error");
        }
    });

单击错误,这将展开结果并显示行号,看起来您还没有将所有代码包含在page@davethecoder谢谢你的建议。我添加了这些信息,但我无法找出发生这种情况的原因,如果我从firefox控制台剪切并粘贴url,然后使用postman运行请求,它将正确返回。。有没有关于如何使这项工作的建议?谢谢..删除数据类型或更改为json,而不是已经尝试过的jsonpI,效果不好。。我不确定是呼叫服务还是服务本身做错了。。