我定义了一个链接&lt; a href =“http://www.example.com”&gt; Hello&lt; / a&gt;。当我点击此链接时,javascript应该检查链接是否存在/ valid.if是的,页面应该加载或页面应该重定向到另一个页面。我正在使用javascript ajax来检查页面是否存在。我正在使用条件xmlhttp.status == 200.但它不能正常工作。这是代码:< / p>
function check(url){
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if (xmlHttp.status==200)
{
alert("Page Available");
}
else
{
window.location.href= "http://www.hello.com";
}
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<a href="http://www.example.com" onclick="check(this)">Click this Link</a>
这里xmlHttp.status == 200不工作。任何人都可以帮助我吗?
答案 0 :(得分:2)
好的,多点:
onclick="check(this)"
不会将URL传递给check
函数,而是传递链接对象。因此,如果要传递URL,则必须引用href
属性。window.location.href
。设置当前位置可以使浏览器直接更改页面,因此alert
可能不会更改。if
每次更改Google的位置?false
来中止链接点击的处理。false
)内部返回onreadystatechange
以停止处理链接。到达那里时,链接已经处理完毕。答案 1 :(得分:0)
答案 2 :(得分:0)
function check(link){
/* ONLY works from same domain OR if the target implemented CORS! */
xmlHttp.open("GET", link.href, true);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if (xmlHttp.status==200)
{
alert("Page Available");
}
else
{
window.location.href= "http://www.hello.com";
}
}
}
xmlHttp.send(null);
return false; // imperative
}
</script>
</head>
<body>
<a href="http://www.example.com" onclick="return check(this)">Click this Link</a>
答案 3 :(得分:0)
您的onclick属性应包含:
check(this.href);
答案 4 :(得分:0)
您没有通过网址。您正在传递链接的DOM元素。你需要使用url.href或者在jQuery中你需要使用$(this).attr('href')。
JavaScript也不会阻止链接被跟踪。你需要让函数返回false,并且在它之前没有错误,或者你可以使用jQuery和event.preventDefault()。
最后,即使您因为相同的原始政策而做了所有事情,它也只适用于您所在的同一域上的链接。 Here is a link to a jQuery version of your code.
答案 5 :(得分:0)
好的,你差不多了。到目前为止有很多有用的评论。但是从服务器重定向而不是从客户端重定向可能更好。 我个人会将参数传递给服务器上的函数(服务器脚本的url)(使用jQuery捕获href)到服务器上的函数,然后使用传递的url进行(head)检查并通过服务器重定向它们它存在。 如果该站点不存在,则不要重定向,只需将JSON发送回客户端,让他们知道该站点不存在。