Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我总是在这个函数上得到404?_Javascript_Xmlhttprequest - Fatal编程技术网

Javascript 为什么我总是在这个函数上得到404?

Javascript 为什么我总是在这个函数上得到404?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我正在使用此功能检查网页是否存在。要做到这一点,我检查它是否有一个标题。但我总是得到一个404,即使有一个空白的url。。我做错了什么 var xmlhttp; function checkURL(url){ xmlhttp=null; // initialize the request object // All the browsers except for the old IE if (window.XMLHttpRequest) { xml

我正在使用此功能检查网页是否存在。要做到这一点,我检查它是否有一个标题。但我总是得到一个404,即使有一个空白的url。。我做错了什么

var xmlhttp;
function checkURL(url){
    xmlhttp=null; // initialize the request object
    // All the browsers except for the old IE
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest()
        xmlhttp.onreadystatechange=xmlhttpChange
        xmlhttp.open("HEAD",url,true)
        xmlhttp.send(null)
    }
    // old IE
    else if (window.ActiveXObject)
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
        if (xmlhttp)
        {
            xmlhttp.onreadystatechange=xmlhttpChange
            xmlhttp.open("HEAD",url,true)
            xmlhttp.send();
        }
    }
}

function xmlhttpChange()
{
    // if loaded
    if (xmlhttp.readyState==4)
    {
        // if head exists "OK"
       if (xmlhttp.status==200)
       {
           alert('URL exists')
       }
       else
       {
           alert("Status is "+xmlhttp.status)
       }
    }
}

我假设
url
变量将包含指向其他站点的地址,而不仅仅是用于检查应用程序中的内部路径?您不能将AJAX添加到另一个类似的域,因为。

它适用于允许您访问的任何页面

演示:


您只能使用XMLHTTP对象访问同一域中的页面。

但如果不可能,是否有其他方法可以检查我域之外的url中的标题?正如Guffa指出的,您的代码确实会生成404在不违反同源策略时的其他值。那里没有足够的代码来告诉您为什么不能在同一个域中工作,但可能您缺少了一个初始斜杠,或者
url
变量中的某些内容。您应该能够在浏览器的开发工具中查看同一域内的请求,并查看请求的URL以及响应。如果您也使用服务器端语言,您可以向自己的服务器发送AJAX请求,让服务器向远程URL提交请求,并返回状态代码的指示。我的服务器不包括服务器php端包含的内容和其他一些内容,所以我的选择有点有限。这就是为什么我想要一个干净的javascript代码来检查网站是否在线。在php中,你可以尝试
file\u get\u contents($url)。出于安全原因,在javascript中无法做到这一点。