如果我有一个URL,我可以用jQuery检查页面是否存在吗?例如,如果它返回400错误,我将执行一个命令,如果不是400,则执行另一个命令?
我会使用AJAX调用吗?或者处理它的最佳方法是什么?
抱歉,没有意识到这很重要。网址不在同一个网域上......答案 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()
的文档:
请注意statusCode
设置,该设置允许您传入要为各种响应调用的回调方法。如果有HTTP 400,则可以使用它来设置一个回调,对于任何其他响应,可以使用不同的回调。
答案 4 :(得分:0)
虽然出于安全考虑,您无法跨域进行AJAX请求(请参阅:Same origin policy)
您可以通过AJAX回叫您的网络服务器,然后创建Web请求服务器端并返回状态代码。
此外,您需要的只是状态代码,您可以将网络请求设为"HEAD"(而不是"GET"),这样您只能获得标题信息(包含状态代码)