Я делаю запрос к старому серверу, который обслуживает неправильно сформированный JSON.Это не мое, поэтому я не могу изменить сервер.Это междоменный.Вот мой код:
$.ajax({
url: 'http://someDomain.com/getData.htm',
dataType: 'jsonp',
error: function(jqXHR, textStatus, errorThrown) {
alert("Got an error: " + textStatus + " " + errorThrown);
},
success: function(data) {
alert("Got it: " + data);
}
});
В таком виде, конечно, я получаю:
Got an error: parseerror Jquery12379789584794587_2893798579279874978 was not called.
Так что он задыхается, потому что ответ JSON-esque выглядит следующим образом:
{name:"RMA-83186",date:"01/24/12 13:30:45"}
... и jQuery по праву требует, чтобы он был правильно сформированным JSON.(Это не потому, что свойства должны быть заключены в двойные кавычки. См. «Важное» примечание здесь .)
Итак, я подумал, что я привнесу ответ как dataType: 'text'
, cleanи пусть jQuery анализирует его как JSON.Однако, когда я изменяю его на dataType: 'text'
, я получаю:
Got an error: error No transport
... это то, что вы получаете из междоменного запроса.Я попытался добавить crossDomain: true
к запросу и использовать его с text
dataType, но получил ту же ошибку.
Кто-нибудь знает, как я могу получить эти плохо сформированные данные из междоменного запроса, такЯ могу почистить и разобрать его?
Спасибо!
РЕДАКТИРОВАТЬ: dataFilter
parm не помогает, потому что проблема с корнем (при использовании dataType:'jsonp'
) даже не плохо сформированаСтрока JSON, а скорее, что ответ не является истинным ответом JSONp, т. Е. Это не вызов функции.