2010-11-12 4 views
7

Мой JQuery ниже:Я не могу остановить запрос Ajax с помощью JQuery и прервать() функцию

var x = $.ajax({ 
    dataType: "jsonp", 
    url: "https://ajax.googleapis.com/ajax/services/search/images?q=google&v=1.0", 
    success: function(msg){ 
     alert("Jsonp data: " + msg); 
    } 
}); 

alert(x); // x is undefined 
// x.abort()​​ 

Вы можете попробовать этот код здесь: http://jsbin.com/iyile3/2/edit

Я хочу, чтобы остановить этот Аякса запросить и остановить эту функцию успеха запроса ajax.

Но я понимаю, что «x» не определено, я думаю, что не останавливаю этот запрос ajax и его функцию успеха.

Может ли кто-нибудь мне помочь?

спасибо!

ответ

9

Хорошо, что имеет смысл.

A jsonp звонок не является обычным XMLHttpRequest (который обычно возвращается .ajax()). Это не сработает, так как вы не сможете разбить same origin policy.

JSON-Padding работает с динамическим вставкой тега скрипта. Таким образом, jQuery просто создает тэг <script> на вашем сайте и загружает данные. No XHR объект вообще.

Я не думаю, что есть способ досрочно прекратить такой запрос, но я надеюсь, что кто-то меня исправит здесь, если я ошибаюсь.

+0

Большое спасибо jAndy! – rqqfccsa

+0

Да. Невозможно убить запрос Jsonp, используя функцию abort(). Но я думаю, что исправил эту проблему, используя функцию JavaScript serTimeout(). Возможно, кто-то также будет использовать функцию clearTimeout(). Это хорошо. Но в этом случае я использую функцию setTimeout для устранения проблемы. – rqqfccsa

4

Я думаю, что documentation может быть немного неправильным в этом вопросе. При использовании JSONP не запрашивается запрос AJAX. В этом случае функция ajax возвращает значение undefined вместо объекта XMLHTTPRequest.

+0

Большое спасибо Анурагу! – rqqfccsa