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,效果不好。。我不确定是呼叫服务还是服务本身做错了。。