Jquery ajax readystate 0 имя ответа статус 0 ошибка statustext

Я получаю следующую ошибку: jquery ajax readystate 0 responsetext status 0 statustext error при ее предоставлении: url(http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm), однако она отлично работает, когда я даю ей url(localhost:""/embparse_page) на моем localhost.

Я попытался использовать заголовки, которые я нашел в поиске Google, и я использовал beforeSend:"" тоже, но он все еще не работает.

Я думаю, что основная проблема: XMLHttpRequest cannot load http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm. Origin "local server" is not allowed by Access-Control-Allow-Origin., но я этого не понимаю.

Может кто-нибудь объяснить мне эту проблему, поскольку я совершенно новичок в этом.

<!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>

Ответ 1

Я получал эту ошибку, и в моем случае это было связано не с той же политикой происхождения. Я получил некоторую помощь от эту ссылку

Мое дело было, у меня была кнопка ссылки, и я не использовал e.PreventDefault()

ASPX

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

Javascript

function VerifySearch(sender, e) {        
    e.preventDefault();
    $.ajax({
                type: 'POST',
    .............
    }
    return false;
}

Ответ 2

та же политика происхождения. браузер не разрешает, когда вы находитесь на

http://site1.com

для подключения к:

site2.com
sub.site1.com
site1:99.com
https://site1.com (not sure about this one)

Это так, что site1 не может украсть контент с сайта2 и притвориться его содержимым сайта1. Пути вокруг этого - JSONP (использование карт google, которые, как я думаю), и site2 предоставляют заголовки cors, но cors не поддерживаются в jQuery 1. * (возможно, не в 2. *), потому что IE имеет некоторые проблемы с его реализацией. В обеих ситуациях вам нужно site2 для сотрудничества с вашим сайтом, чтобы ваш сайт мог отображать его содержимое.

Если вы используете это самостоятельно, вы можете использовать Firefox и установить плагин forcecors. Для активации вы можете выбрать view = > toolbars = > add on bar и щелкнуть по тексту "cors" в правой нижней части экрана.

Ответ 3

Я получал эту ошибку от своего вызова Ajax, и то, что исправлено для меня, просто вставило "return false".

Ответ 4

Я тестировал чтение файла 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.