Короткий вопрос: есть ли способ сделать запрос jsonp серверу, перехватить запрос, но не анализировать его как javascript? Я использую dataType: "текст jsonp" в jQuery 1.5, но он не работает.
Я пытаюсь получить доступ к междоменному URL через AJAX с помощью jsonp. Проблема в том, что другой домен (список каталогов в моем университете) очень старый, и я сомневаюсь, что сервер поддерживает jsonp.
- В Firefox я получаю сообщение об ошибке «Несоответствие имени тега XML (ожидаемый META)». В chrome я получаю «Uncaught SyntaxError Unexpected token <», указывающий на файл, соответствующий моему запросу AJAX. Строка ошибки из обратного вызова ошибки - "parsererror". </li>
- Я не могу сделать обычный вызов AJAX - когда я изменяю тип данных на «текст» или удаляю его все вместе, другой домен жалуется, что пользователь не аутентифицирован, и перенаправляет на страницу входа - даже если я Вы уже зашли в браузер. Когда dataType равен jsonp, этого не происходит.
- Я знаю, что сервер должен поддерживать JSONP, и я не думаю, что это так, но когда я изменяю dataType на JSONP, я вижу, что ресурсы страницы ответов отображаются как в Chrome, так и в Firefox - поэтому сервер фактически отправляет ответ браузеру (статическая HTML-страница + некоторый Java-скрипт), который содержит данные, которые я хочу получить.
- Проблема в том, что jQuery пытается проанализировать ответ как javascript и не может (потому что это не javascript). Таким образом, данные попадают в браузер - мне просто нужно получить к ним доступ!
- Использование dataType: «текст jsonp», который, как предполагается, указывает на отправку запроса jsonp и интерпретацию ответа как текста, не имеет значения - все еще ошибка синтаксического анализа.
Что мне нужно, так это: получить доступ к ответу на запрос jsonp в виде простого текста. Или, если я смогу получить доступ к необработанному ответу на неудачный запрос jsonp - это тоже сработает.
Заранее спасибо!
Код:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text( responseData.slice(0, 100) );
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });