在找不到案例页面的情况下,在ajax中重定向jQuery

时间:2013-09-22 13:37:06

标签: jquery ajax

使用jQueryAjax时,我将整个网址传递给ajax的url:如果URL不存在(以某种方式),我该如何重定向到来自page not found内部的ajax页面? url通过和.htaccess文件。

$(document).ready(function() {
    $('.link').click(function () {
    var parentTag = 'check=checked';
    if(parentTag) {
        // ajax call
        $.ajax({
            type:"GET",
            url:"/mylink/buyers/1/0/0", //If this failed, how do I redirect to something else from here?
            data:parentTag,
        dataType: 'json',
            beforeSend:function(callBack){
                console.log('checked');
            },
            success: function(callBack){
                console.log('Success');
            },
            error: function(callBack){
                console.log('Failed');
            },
        });
    }
    return false;
    });
});    

2 个答案:

答案 0 :(得分:2)

只需为404或任何其他statusCode添加HTTP status处理程序即可!

您还可以添加一般错误回调,但使用状态代码方法的优势在于区分服务器的实际404(页面未找到错误)和其他类型的连接问题。

$.ajax({
  /* ... */
 statusCode: {
    404: function() {
         // server says: page not found; let's redirect to 404 page
         window.location.href = "http://example.com/my/404/page";
    }
  },
  error: function() {
      // something else went wrong
      alert('An unknown error occurred!');
  }
});

答案 1 :(得分:2)

只需将window.location置于错误回调中:

$(document).ready(function() {
    $('.link').click(function () {
    var parentTag = 'check=checked';
    if(parentTag) {
        // ajax call
        $.ajax({
            type:"GET",
            url:"/mylink/buyers/1/0/0", //If this failed, how do I redirect to something else from here?
            data:parentTag,
        dataType: 'json',
            beforeSend:function(callBack){
                console.log('checked');
            },
            success: function(callBack){
                console.log('Success');
            },
            error: function(callBack){
                console.log('Failed');
                window.location = "http://www.example.com";
            },
        });
    }
    return false;
    });
});