我的网站使用PHP的cURL检查5个不同的URL,以判断它们是否在线。问题是加载页面需要很长时间(特别是如果其中一个网站正在检查它已经关闭)。
我听说jQuery的ajax运行良好,所以我尝试了这段代码:
<div class="alert alert-info" id="forum-blockland-us"><b>Checking...</b></div>
<script>
$.ajax({ type: "GET",
url: "http://forum.blockland.us/",
cache:false,
success: function() {
$("#forum-blockland-us").addClass("alert-success");
$("#forum-blockland-us").removeClass("alert-info");
$("#forum-blockland-us").html("<b>Online</b>");
},
error: function() {
$("#forum-blockland-us").addClass("alert-danger");
$("#forum-blockland-us").removeClass("alert-info");
$("#forum-blockland-us").html("<b>Offline</b>");
}
});
</script>
但它总是会返回错误,即使我100%知道这些网站是在线的。
答案 0 :(得分:8)
如果该网站是远程网站,由于Same Origin Policy,您很有可能无法通过javascript实现该网站。
然而,在php中,你只能提出一个HEAD请求,因此它不会加载内容,所以它会更快,更快。
希望这会有所帮助。干杯
答案 1 :(得分:2)
正如@Edgar所说,你最好通过php来做,如果你愿意,这就是:
function urlExists($url=NULL)
{
if($url == NULL) return false;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300){
return true;
} else {
return false;
}
}