#javascript #ajax #jakarta-ee #jsonp #firebug
#javascript #ajax #джакарта-ee #jsonp #firebug
Вопрос:
Итак, я просто впервые пробую веб-сервисы Jersey Jax-rs, и я создал самый простой метод GET, который только можно себе представить.
Я также создал AJAX-функцию для вызова веб-службы. Теперь, если я установлю для dataType
свойства значение json
, я получу ожидаемую ошибку «междоменный», и это нормально.
Однако, когда я изменил его dataType
на jsonp
, я был удивлен, увидев, что Firebug смог проанализировать строку («Ответ от webservice»), которая была отправлена веб-службой, даже если она была неправильно отформатирована для JSONP, и показать ее на своей панели консоли.
Итак, если Firebug может проанализировать недопустимый JSONP (а я бы подумал, что он не должен быть способен), почему AJAX, похоже, не может его также проанализировать? Если я упорядочиваю данные, полученные вызовом AJAX, все, что я вижу, это,
{"readyState":4,"status":200,"statusText":"success"}
Вот мой код для большего контекста.
Веб-сервис Джерси
@GET
@Path("getJson")
@Produces("application/json")
public String getJson()
{
return "Reply from Webservice";
}
Javascript Ajax
function accessWebService()
{
var query = "http://localhost:8080/test_webservice/webresources/test/getJson";
$.ajax
({
type: 'GET',
url: query,
dataType: 'jsonp',
async: true,
timeout: 10000,
jsonpCallback: call,
complete: function(data)
{
console.log(JSON.stringify(data));
}
});
}
function call(data)
{
console.log("jsonp");
}
Вывод Firebug на консоль
{"readyState":4,"status":200,"statusText":"success"}
SyntaxError: missing ; before statement
"Reply from Webservice"
Ответ №1:
Firebug обладает некоторыми специальными функциями для анализа (недопустимого) JSON. Посмотрите этот файл:
Посмотрите на функции Json.parseJSONString
и pseudoJsonToJson(json)
там.
Комментарии:
1. Спасибо, Себастьян, я с нетерпением жду возможности взглянуть на это позже. Итак, по сути, можно ли это использовать для получения json через jsonp, даже если он неправильно отформатирован?
2. В принципе, да, хотя за дополнительной информацией вам лучше обратиться в дискуссионную группу Firebug . Саймон Линдхольм узнает об этом больше, когда он, наконец, коснется этого кода. Пожалуйста, обратите внимание, что код Firebug находится под лицензией BSD .
3. Да, безусловно, я бы не стал использовать код Firebug без разрешения. На самом деле меня больше интересует, что можно проанализировать (недопустимый) json, что заставит меня по-другому думать о jsonp в будущем. Спасибо за всю вашу помощь.