jQuery: Как включить `timeout` для` $ .ajax ({dataType: 'jsonp' ... `? Есть ли какое-нибудь решение? - PullRequest
6 голосов
/ 13 января 2011

jQuery: как включить timeout для $.ajax({dataType:'jsonp'...? Есть ли решение? http://jsfiddle.net/laukstein/2wcpU/4

$.ajax({
    type:"GET",
    url:'http://lab.laukstein.com/ajax-seo/.json',
    dataType:'jsonp',
    timeout:200, // Not working with dataType:'jsonp'
    success:function(data){$('#content').html(data.content);},
    error:function(request,status,error){$('#content').html('request failed');}
});

Я не люблю использовать для этого некоторые плагины, например http://code.google.com/p/jquery-jsonp.

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Вот мое решение с setTimeout и clearTimeout http://jsfiddle.net/laukstein/2wcpU/7/

$('#content').ajaxStart(function(){
    $(this).html('Loading...');
});
var timer=window.setTimeout(function(){
    $('#content').html('Loading seems to be taking a while. Try again.');
},2000);
$.ajax({
    type:"GET",
    url:'http://lab.laukstein.com/ajax-seo/.json',
    dataType:'jsonp',
    success:function(data){
        window.clearTimeout(timer);
        $('#content').html(data.content);
    },
    error:function(){
        window.clearTimeout(timer);
        $('#content').html('The request failed. Try to refresh page.');
    }
});
0 голосов
/ 13 января 2011

Биньямин,

этот так ответ должен помочь вам:

jQuery ajax (jsonp) игнорирует тайм-аут и не генерирует событие ошибки

в основном, предлагает использовать jquery.jsonp вместо $ ajax

...