gpt4 book ai didi

java - 使用 jQuery ajax 调用 Restful Web 服务不起作用

转载 作者:行者123 更新时间:2023-12-01 13:35:13 25 4
gpt4 key购买 nike

我正在使用 Restful Web 服务并尝试从 jquery ajax 调用查询它RESTAPI

@GET
@Path("/dynamicReports")
@Produces("application/json")
public String getDynamicFilters() {
String JsonStr=null;
JSONObject json=new JSONObject();
JSONObject tempjson=new JSONObject();
tempjson.put("number", 200);
json.put("response", tempjson);
JsonStr=json.toString();
System.out.println("inputJson : "+JsonStr);
Response.ok().header("Access-Control-Allow-Origin", "*").build();
return JsonStr;
}

我的 jquery ajax 调用

 $.ajax({
type: "GET",
dataType:"jsonp",
crossDomain: true,
url: "http://url:port/DynamicReportsService/dynamicReports",
success: function(data1) {
console.log("response:" + data1);
},
error: function(jqXHR, textStatus, errorThrown) {
$("#loadingimageid").remove();
alert('generateReportFromMR:Error in processing!');
console.log(jqXHR);
}
});

在浏览器中,如果我尝试该网址,它会给我{“response”:{“number”:200}}。但是 ajax 调用给出了一个错误,并且在 Web 控制台中它显示了带有错误的 json。

最佳答案

当您使用 jsonp 时,您需要使用浏览器发送的回调参数来给出响应。将 dataType 设置为 jsonp 将允许 jQuery 自动添加额外的 ?callback=?添加到 URL 末尾以指定回调。

基本上,调用期望结果为 jsonp 格式,但您只返回 json 格式。通过将 json 包含在回调参数中,您可以确保返回 jsonp 而不是 json。

当您检查控制台时,GET 请求将包含类似内容

?callback=jQuery152035532653917078266_4305276802416

现在您需要做的就是使用“jQuery152035532653917078266_4305276802416”,您应该给出如下响应,

jQuery152035532653917078266_4305276802416({"response":{"number":200}});

因此,在 Java 中,您可以使用 request.getParameter("callback"),然后使用它返回 jsonp。

return request.getParameter("callback") + "(" + jsonStr + ");";

如果你想使用自定义回调,那么你的ajax请求应该是这样的,

$.ajax({
type: "GET",
dataType:"jsonp",
crossDomain: true,
url: "http://url:port/DynamicReportsService/dynamicReports",
jsonpCallback: 'successCallback',
success: function(data1) {
console.log("response:" + data1);
},
error: function(jqXHR, textStatus, errorThrown) {
$("#loadingimageid").remove();
alert('generateReportFromMR:Error in processing!');
console.log(jqXHR);
}
});

响应是,

return "successCallback(" + jsonStr + ");";

关于java - 使用 jQuery ajax 调用 Restful Web 服务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com