jQuery:如何为`$ .ajax启用`timeout`({dataType:'jsonp'...`?有什么解决方案吗?

时间:2011-01-13 12:12:39

标签: ajax jquery timeout jsonp

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 个答案:

答案 0 :(得分:4)

以下是setTimeoutclearTimeout 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.');
    }
});

答案 1 :(得分:0)

本雅明,

这个SO答案可以帮助你:

jQuery ajax (jsonp) ignores a timeout and doesn't fire the error event

基本上,建议使用jquery.jsonp而不是$ ajax