2012-07-26 48 views
1

工作於:ASP.NET MVC 3,JavaScript,jQuery。 web.config文件設置爲處理HTTP 404錯誤。具體來說,它將提供正確的重定向到無效的URL,如www.mysite.com/INVALIDURL(即404頁面未找到)如何在Ajax錯誤上拋出404錯誤以便指向默認的404行爲?

問題:有沒有一種方法可以在Ajax錯誤中默認相同的行爲?換句話說,如何在ajax錯誤中拋出404'頁面未找到'響應。

$.ajax ({ ... }) 
    .error(function (jqXHR, textStatus, errorThrown) { 
    // throw 404 Page not found HTTP error 
    } 

EDIT1:最終的結果,我找的是提供一個「找不到網頁」在一個Ajax錯誤

EDIT2顯示:我已經有像這樣的web.config文件中的重定向設置

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404" /> 
     <error statusCode="404" path="/error/404" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 

我想ajax.error默認爲該行爲,這有可能嗎?

+1

用這個作爲默認設置您不能扔從JavaScript 404錯誤(也沒有意義)。你究竟想要做什麼? – 2012-07-26 22:39:37

回答

0

所以 - 你想重定向到ajax錯誤的404頁面?如上所述,你不能扔404,但你可以重定向到另一個頁面。

$.ajax ({ ... }) 
    .error(function (jqXHR, textStatus, errorThrown) { 
    window.location.href = '/My404ErrorPage'; 
    } 

編輯

如果你不想要的網址改變 - 你將需要最有可能考慮使用一個模式對話框/提示框/特殊div來傳達這個信息給用戶並放置您要在其中使用的消息。下面假設NotFound是某個頁面上某個div的id,並且利用了jquery UI的第一部分,第二部分是純粹的「alert」框。

$.ajax ({ ... }) 
    .error(function (jqXHR, textStatus, errorThrown) { 
    $('#NotFound').html('Some error message'); 
    $('#NotFound').Dialog(); 
    //OR you could do 
    alert('Some error message'); 
    } 
+1

對,但是如果我想保留無效的URL並向用戶顯示「找不到頁面」怎麼辦? 說輸入網址是:www.mywebsite.com/query?SomeID1 我想讓用戶能夠看到不正確的網址,並相應地修復它。 像這樣:www.mywebsite.com/query?SomeID – Dannalieth 2012-07-26 22:47:14

+0

@Dannalieth:我在這裏有點困惑。爲什麼AJAX需要「拋出404錯誤」?如果你轉到那個URL,爲什麼不讓*服務器*在需要時拋出404? – 2012-07-26 22:51:39

+0

因爲我從ajax調用調用另一個服務,即執行基於SOMEID的查詢(在上例中)。查詢結果與特定的網頁相關聯,因此404錯誤只能在執行完ajax(查詢)之後拋出。 – Dannalieth 2012-07-26 22:55:34

0

嘗試使用「ajaxSetup」設置js重定向到錯誤頁面。例如:

$.ajaxSetup({ 
    beforeSend : function(){showLoader()}, 
    complete : function(){hideLoader()}, 
    error  : function(){redirTo404()} 
}); 

因此將所有的Ajax調用