как перехватить ответ HTML с междоменным вызовом Ajax с помощью jquery lib - PullRequest
1 голос
/ 11 января 2012

У меня есть форма входа, которая вызывает страницу внешнего контроллера, которая возвращает HTML-страницу с сообщением ИСТИНА или ЛОЖЬ. Я написал эту функцию jQuery:

$("#login").click(function(){
$.ajax({
  dataType: 'jsonp',
  data: $('#form_login').serialize(),
  jsonp: 'jsonp_callback',
  url: "http://news.univadis.it/autenticazione/autentication.asp",
  complete: function(data, textStatus, XMLHttpRequest){
        $("#output").html(data);
   }
});
});

, но когда я пытаюсь поставить сообщение «ИСТИНА» или «ЛОЖЬ», Firebug возвращает эту ошибку:

XML tag name mismatch (expected meta) </head> 

это потому, что ответ находится в HTML, а не в Json, как я могу перехватить ответ HTML?

1 Ответ

0 голосов
/ 11 января 2012

Нет, это не сработает.

JSONP на самом деле является хаком, когда вы запрашиваете междоменный ресурс с помощью запроса JSONP, библиотека jQuery вставляет узел <script/> в заголовок HTML-документа с указанным вами URL.

Итак, из вашего AJAX-запроса будет создан следующий узел скрипта:

<script type="text/javascript" src="http://news.univadis.it/autenticazione/autentication.asp?jsonp_callback=jQuery17108946618142072111_1326271422070&_=1326271651101"/>

Конечно, фактические параметры будут отличаться, но это будет выглядеть так. Веб-сервер должен отправить подготовленный ответ JavaScript. Подготовленный ответ означает, что фактический ответ должен быть заключен в вызов функции JavaScript, в этом примере:

jQuery17108946618142072111_1326271422070('this is your data');

Без этого обратного вызова вы никогда не получите ответ.

Вот почему вы не можете «перехватить» ответ HTML с помощью запросов JSONP.

...