Javascript jquery ajax readystate 0响应文本状态0状态文本错误

Javascript jquery ajax readystate 0响应文本状态0状态文本错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我得到了以下错误:jquery ajax readystate 0 responsetext status 0 status text error当给出它时:url(http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm),但是当我在本地主机上为它提供url(localhost:“/embparse\u页面)时,它工作正常 我尝试过使用在谷歌搜索中找到的标题,我也使用了发送前:“,但仍然不起作用 我认为主要问题是:X

我得到了以下错误:
jquery ajax readystate 0 responsetext status 0 status text error
当给出它时:
url(http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm)
,但是当我在本地主机上为它提供
url(localhost:“/embparse\u页面)
时,它工作正常

我尝试过使用在谷歌搜索中找到的标题,我也使用了
发送前:“
,但仍然不起作用

我认为主要问题是:
XMLHttpRequest无法加载http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm. “本地服务器”是访问控制不允许的。允许源。
但我不理解它

谁能给我解释一下这个问题,因为我对这个问题还不太熟悉

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:ng="http://angularjs.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta Access-Control-Allow-Origin="*" />
    <title>Page Parsing</title>
    <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script>
    <script>
    getit=function(){
        jQuery.support.cors = true;
        $.ajax({
            type:"GET",
            url:"http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm",
            dataType:"html",
            crossDomain:true,
            beforeSend: function(xhr) {
                xhr.overrideMimeType('text/plain;charset=UTF-8');
            },
            success:function(XMLHttpRequest,jqXHR ,data) {
                //alert(data.title);
                var starttitl=data.lastIndexOf('<title>');
                var endtitl=data.lastIndexOf('</title>');
                var title1=data.substring(starttitl+7,endtitl);
                alert(title1);
            },
            error:function(errorStatus,xhr) {
                alert("Error"+JSON.stringify(errorStatus));
            }
        });
    }   
    </script>
</head>
<body>
    <div id="siteloader">
        <input type="button" onclick="getit()" />
    </div>
</body>
</html>

页面解析
getit=函数(){
jQuery.support.cors=true;
$.ajax({
键入:“获取”,
url:“http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm",
数据类型:“html”,
跨域:是的,
发送前:函数(xhr){
xhr.overrideMimeType('text/plain;charset=UTF-8');
},
成功:函数(XMLHttpRequest、jqXHR、数据){
//警报(数据标题);
var starttitl=data.lastIndexOf(“”);
var endtitl=data.lastIndexOf(“”);
var title1=数据子字符串(starttitl+7,endtitl);
警报(标题1);
},
错误:函数(errorStatus,xhr){
警报(“错误”+JSON.stringify(errorStatus));
}
});
}   

同一原产地政策。当您打开时,浏览器不允许

http://site1.com
要连接到:

site2.com
sub.site1.com
site1:99.com
https://site1.com (not sure about this one)
这是因为site1无法从site2窃取内容并假装它是site1的内容。解决这一问题的方法是JSONP(我认为谷歌地图使用JSONP)和让
site2
提供cors头,但JQuery1.*中不支持cors(可能在2.*中也不支持),因为IE在实现它时遇到了一些问题。在这两种情况下,您都需要site2与您的站点合作,以便您的站点能够显示其内容


如果你只自己使用它,那么你可以使用Firefox并安装forcecors插件。要激活,您可以选择view=>toolbars=>add-on-bar,然后单击屏幕右下角的文本“cors”。

我收到了这个错误,在我的情况下,它不是由于同源策略。这很有帮助

我的情况是,我有一个链接按钮,我没有使用e.PreventDefault()

ASPX

<asp:LinkButton ID="lnkSearch" runat="server" CssClass="DockCmdSearch" CommandName="Search" OnClientClick="return VerifySearch(this, event);" />

我正在测试读取
txt/XML
文件中的
json/XML
数据,结果发现一个错误。。。读取的值为:
Status[0]&readyState[0]
StatusText[error]这在Internet explorer上成功运行,但在Chrome上无法运行,因为域必须相同

这就是修复它的方法

转到C:\WINDOWS\system32\drivers\etc\hosts

为您的localhost应用程序添加一个名称:

127.0.0.1   SampleSiteName.com
现在在chrome中以
http://SampleSiteName.com/YourAjaxFileName.htm
(如果打开,则表示您已正确输入主机名) 转到您的
HTML
文件,给出您试图读取的文件的相对地址(如果
FileToBeRead.txt
YourAjaxFileName.htm
位于同一文件夹中,则只需输入url:“
/FileToBeRead.txt
”)


现在,您的代码也可以在Chrome上运行。

我在Ajax调用中遇到了这个错误,而为我解决这个问题的方法是输入“return false”。

我在Nginx(服务器端)和AngularJs(用户端)上也遇到了同样的问题
正如其他开发人员所说的Cors问题,这里我只想说我是如何解决我的问题的,也许有人会使用这种方法;)
首先,我在我的Nginx配置文件中添加了以下行(在linux->/etc/Nginx/sites available/your domain中):

add_头访问控制允许原点*;
添加_头“访问控制允许凭据”“true”;
添加_标题“访问控制允许方法”“获取、发布、选项”;

添加_头“访问控制允许头”DNT,X-CustomHeader,Keep-Alive,用户代理,X-Requested-With,如果修改自,缓存控制,内容类型'一个提示:不要使用警报,因为这是最烦人的调试方式。尝试
console.log
并在Chrome中按F12或在firefox中按control+shift+k打开控制台。你有很多工具可以使用,比如设置断点,用请求和响应头检查请求。谢谢主席先生的建议这篇文章中的顶级答案非常深入:@HMR,没有警报,如果您在iOS设备上进行测试,并且没有mac进行任何类型的远程调试,您有什么建议?但是我们可以使用cURL()在php中实现这一概念(可以从site1访问site2的内容)。因此,如果javascript中有类似的内容,请告诉我是的,您可以通过服务器代理请求,但您违反了从中获取内容的站点的ip属性。一些大型超市网站做到了这一点,当另一个网站检测到它时,他们向超市网站提供虚假信息,其中包括被砍头的照片等。这是一种有趣而有效的方式,也可能是律师敲你的门door@DhirenderTyagi如果site2不希望您的站点显示其内容,或者不想创建JSON API,则可以选择通过php代理。这不能在JavaScript中完成,因为JavaScript在浏览器中运行,并且浏览器强制执行同源策略,以保护站点不被其他站点获取和呈现其内容。至少通过代理方法,site2可以检测来自同一IP的批量请求。同源策略不用于保护知识产权。总的来说,这是一个问题
127.0.0.1   SampleSiteName.com