如果页面不存在,请加载特殊页面(404)

我有一个小函数(下面),它接受一个参数来确定要加载的内容。 有没有办法可以让它成为.load()有一个“其他”或后备如果它与404相遇?

function start(page,last){ $("#area").load("pages/"+page+".inc.php"); loading(); } 

提前致谢 :)

您可以指定加载完成时要执行的函数。

取自文档

 $("#success").load("/not-here.php", function(response, status, xhr) { if (status == "error") { var msg = "Sorry but there was an error: "; $("#error").html(msg + xhr.status + " " + xhr.statusText); } }); 

使用您的代码看起来类似于:

 function start(page,last){ $("#area").load("pages/"+page+".inc.php", function(response, status, xhr) { if (status == "error") { // don't load as an error occured,...do something else... } else{ loading(); }; }); } 

您可以查看链接的文档以获取有关可能的返回值和错误的更多详细信息。 实际上,文档底部的演示显示了处理404。

示例中的xhr.status包含错误号404并且Not Found xhr.statusText

这意味着您可以检查具体的数字:

 function start(page,last){ $("#area").load("pages/"+page+".inc.php", function(response, status, xhr) { if (status == "error" && xhr.status == ""404) { // a 404 occurred... } else{ loading(); }; }); } 

DEMO

.load()具有responseText和textStatus参数,可以告诉您何时成功,以便您可以使用它来检查它是否失败。 成功的响应将生成“成功”或“未修改”,而错误会生成“错误”。

 $("#success").load("/not-here.php", function(response, status, xhr) { if (status == "error") { var msg = "Sorry but there was an error: "; $("#error").html(msg + xhr.status + " " + xhr.statusText); } }); 

ajaxSetup你可以定义状态代码

 $.ajaxSetup({ statusCode: { 404: function() { alert("page not found"); //load the 404 page here } } });