拦截ajax调用导致Ajax错误

时间:2014-08-15 12:45:21

标签: jquery ajax django

我试图理解当ajax调用被中断但不确定如何处理和捕获它时会发生什么......

这是我的带有ajax调用的简单html文件 -

  1. 程序执行ajax调用..(ajax调用不会返回分钟 - 在视图上添加了一个计时器)..

  2. 还有另一个函数每5秒触发一次(当键盘/鼠标上没有动作时我实际上会触发此功能,我现在还没有添加它).15秒后,页面得到重定向到主页..

  3. 3.代码按预期工作,但是当页面被重定向时,ajax调用会引发错误。 错误消息 - "错误请求/ first_ajax_call:0错误"

    问题:

    在我的情况下,不应抛出此错误..我必须处理正常情况......我该如何处理?

    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
    {% load staticfiles %}
    
    <script>
    $(document).ready(function() {
        var incr = 0;
        setInterval(refresh, 5000);
        function refresh()
        {
            incr = incr + 1
            alert("setinterval callling incr = " + incr )
            if (incr >= 3){
                window.location.assign("./")
            }
    
        }
    
        $(document).ajaxError(function(e,xhr,opt){
            alert("Error requesting " + opt.url + ": " + xhr.status + " " + xhr.statusText);
          });
    
            $.ajax({
                //async:false
                url:'/first_ajax_call'
                ,type: 'GET'
                ,success: function(res,status,xhr){
                        alert('first_ajax_call complete')
                }
                //,error: function(msg){
                //  alert("Call to getproductinfo failed")
                //}
            })
            alert('after ajax call')
    })
    </script>
    </head>
    <body>
    This is the page that will be redirected
    </body>
    </html>
    

    查看处理程序

    def first_ajax_call(request):
        import time
        time.sleep(300)
        return  HttpResponse(json.dumps('a'),content_type='application/json')
    

1 个答案:

答案 0 :(得分:0)

如果您要返回内容类型为'application/json'的http响应,则调用的相应方法为$.getJSON()

$.getJSON('first_ajax_call')
.done(function( json ) {
alert('first_ajax_call complete');
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
alert("Call to getproductinfo failed: " + err) 
});