我可以检查是/ jQuery的页面

时间:2011-12-08 19:55:06

标签: jquery

如果我有一个URL,我可以用jQuery检查页面是否存在吗?例如,如果它返回400错误,我将执行一个命令,如果不是400,则执行另一个命令?

我会使用AJAX调用吗?或者处理它的最佳方法是什么?

抱歉,没有意识到这很重要。网址不在同一个网域上......

5 个答案:

答案 0 :(得分:4)

如果您要检查的网页位于同一台服务器上,则可以使用success中的error$.ajax()回调来确定该网页是否存在:

$.ajax('path/to/file.html', {
    error : function (jqXHR, textStatus, errorThrown) {
        alert('File Not Found');
    },
    success : function (data, textStatus, jqXHR) {
       alert('File Found');
    }
});

文档:http://api.jquery.com/jquery.ajax/

关于error回调函数的文档的摘录:

  

注意:不会为跨域脚本和JSONP调用此处理程序   请求。

<强>更新

使用PHP执行此操作:

<?php
if (fopen($_GET['url'], "r")) {
    echo "success";
} else {
    echo "error";
}
?>

然后在JS中你可以轮询这个PHP文件:

$.get('path/to/script.php', { url : 'http://www.google.com/' }, function (response) {
    if (response == 'success') {
        alert("File Found");
    } else {
        alert("File Not Found");
    }
});

以下是PHP中fopen()函数的已接受协议列表:http://us.php.net/manual/en/wrappers.php

答案 1 :(得分:2)

您当然可以使用jQuery.ajax(),然后在调用完成后查看响应代码。

如果您不需要那么多细节,只需要知道请求是成功还是失败,您就可以使用done()fail()处理程序。

答案 2 :(得分:1)

也许是这样的:

$.get("index.html")
  .done(function(){ alert("page exists"); })
  .fail(function(){ alert("page does not exist!"); });

答案 3 :(得分:0)

以下是jQuery.ajax()的文档:

jQuery Ajax Doc

请注意statusCode设置,该设置允许您传入要为各种响应调用的回调方法。如果有HTTP 400,则可以使用它来设置一个回调,对于任何其他响应,可以使用不同的回调。

答案 4 :(得分:0)

虽然出于安全考虑,您无法跨域进行AJAX请求(请参阅:Same origin policy

您可以通过AJAX回叫您的网络服务器,然后创建Web请求服务器端并返回状态代码。

此外,您需要的只是状态代码,您可以将网络请求设为"HEAD"(而不是"GET"),这样您只能获得标题信息(包含状态代码)