После большой боли мне удалось получить простой вызов jquery / ajax в простой сервис отдыха, возвращающий jsonp с обратным вызовом. После попытки установить обратный вызов в URL, я, наконец,
удалось заставить его работать, добавив "jsonpCallback" и имя обратного вызова к параметрам.
$.ajax({
type : 'GET',
url : 'http://localhost:8080/RestimpleApp/report/extract',
dataType : 'jsonp',
jsonpCallback : "jsoncallback",
success : function(json) {
alert('success');
},
error : function(jqXHR, status) {
alert("Failed " + status + jqXHR);
}
});
На стороне сервера мне пришлось обернуть свой ответ JSON в имя обратного вызова ("jsoncallback").
@GET
@Produces({ MediaType.APPLICATION_JSON })
public String extractData() {
System.out.println("Incoming call = ");
StringBuilder json = new StringBuilder("jsoncallback(");
json.append("{\"sEcho\": 7,");
json.append("\"iTotalRecords\": \"600\",");
json.append("\"iTotalDisplayRecords\": \"12\",");
json.append("\"aaData\": [");
json.append("{");
json.append("\"engine\": \"Gecko\",");
json.append("\"browser\": \"Firefox 1.0\",");
json.append("\"platform\": \"Win 98+ / OSX.2+\",");
json.append("\"version\": \"1.7\",");
json.append("\"grade\": \"A\"");
json.append("},");
json.append("{");
json.append("\"engine\": \"Gecko\",");
json.append("\"browser\": \"Firefox 1.5\",");
json.append("\"platform\": \"Win 98+ / OSX.2+\",");
json.append("\"version\": \"1.8\",");
json.append("\"grade\": \"A\"");
json.append("} ]");
json.append("}");
json.append(");");
return json.toString();
}
много часов потрачено впустую, пытаясь заставить это работать: (