отправить запрос как jsonp, интерпретировать ответ как текст, используя jQuery 1.5

Короткий вопрос: есть ли способ сделать jsonp-запрос к серверу, перехватить запрос, но не разбирать его как javascript? Я использую dataType: "jsonp text" в jQuery 1.5, но это не работает.

Я пытаюсь получить доступ к междоменному URL через AJAX с помощью jsonp. Проблема в том, что другой домен (список каталогов в моем университете) очень старый, и я сомневаюсь, что сервер поддерживает jsonp.

  • В Firefox я получаю ошибку "XML tag name mismatch (expected META)". В chrome я получаю ошибку "Uncaught SyntaxError Unexpected token <", оба указывают на файл, соответствующий моему AJAX-запросу. Строка ошибки из обратного вызова ошибки - "parsererror".
  • Я не могу выполнить обычный AJAX-запрос - когда я меняю datatype на просто "text" или удаляю его совсем, другой домен жалуется, что пользователь не аутентифицирован, и перенаправляет на страницу входа - даже если я уже вошел в систему через браузер. Когда dataType - jsonp, этого не происходит.
  • Я знаю, что сервер должен поддерживать JSONP, и я не думаю, что он это делает, но когда я меняю dataType на JSONP, я вижу, что ресурсы страницы ответа появляются и в Chrome, и в Firefox - так что сервер действительно посылает ответ браузеру (статическая веб-страница HTML + немного java-скрипта) - который содержит данные, которые я хочу получить.
  • Проблема в том, что jQuery пытается разобрать ответ как javascript и терпит неудачу (потому что это не javascript). Таким образом, данные оказываются в браузере - мне просто нужно получить к ним доступ!
  • Используется dataType: "jsonp text", который должен указывать на отправку 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"); });
5
задан Sherwin Yu 29 August 2013 в 21:19
поделиться