JQuery: запуск AJAX локально без веб-сервера

У меня есть следующая функция в файле .js в index.html

function getValues(){

 $.ajax({
   type: 'POST',
   url: "http://localhost/getData/getdata.php",
   success: function(data){
     var dataValues;
     var apnd;

     dataValues = String(data.NSE);
     apnd = "a";
     updateValues(dataValues, apnd);

     dataValues = String(data.BSE);
     apnd = "b";
     updateValues(dataValues, apnd);
    },
   dataType: "json"
 });

}

это отлично работает, когда я запускаю его на веб-сервере, таком как wamp. Но я хочу запустить index.html локально без веб-сервера. Пользователь просто дважды кликает index.html, и он должен запускаться, но это не так. данные всегда равны нулю. В чем может быть проблема? Извините, я супер JQuery Noob.

код в файле getdata.php

<?

echo json_encode(array("NSE"=>rand(5000, 20000),"BSE"=>rand(5000, 20000))); 

?>

Ответы

Ответ 1

При запуске вашего index.html из файла работает AJAX. Но проблема возникает из-за того, что вы просматриваете файл по адресу "file://....../index.html", и вы делаете запрос AJAX на " http://localhost/..../something.php", который НЕ ДОПУСКАЕТСЯ из-за межсайтового скриптинга. Все запросы AJAX должны поступать на тот же домен/сервер.

Это предполагается, что вы просматриваете файл, дважды щелкнув его и все еще делающий запрос AJAX на веб-сервер.

Ответ 2

AJAX нужен веб-сервер для связи, чтобы он мог получать любые данные; иначе его просто разговаривали со стеной. Запуск script без веб-сервера похож на попытку сделать вызов без сотовой службы.: D

Ответ 3

Веб-сервер - это именно то, что обрабатывает все детали для вас.

Вы не можете отправить сообщение POST без веб-сервера для публикации. HTTP = веб-протокол, поэтому вы не можете иметь URL-адрес HTTP без целевого веб-сервера.

Веб-сервер также является процессом, который принимает ваш запрос на страницу PHP и запускает PHP-интерпретатор, управляя входами и выходами.

Почему вы хотите запустить его локально?

Ответ 4

Ajax не работает над файлом://протокол, как упоминалось другими. Возможно, вам нужно что-то вроде http://www.appcelerator.com/ для создания настольных приложений с помощью html/js/css

Ответ 5

Вы не можете этого сделать, вы должны открыть свой html файл также с адреса веб-сервера, например http://localhost/yoursite/file.html или даже с удаленным URL-адресом сервера. Вам нужно пройти через URL сервера/сервера.

Ответ 6

Прочитайте SOP. Доступ к данным из домена, отличного от текущего, блокируется по соображениям безопасности.

Ответ 7

Я щекочусь розовым со мной, потому что, читая ответы, вы узнали, как вы не можете делать AJAX "локально" без веб-сервера, я могу решить, как вы можете это сделать. С JavaScript методы объекта XMLHttpRequest() в основном создаются браузером, и вам нужно оставить этот файл, созданный веб-сервером (xmlhttp.status == 200). Следующие работы:

<script>
window.onload = function() {

    var input = document.getElementById("input");

    input.onclick = function() {
        var xmlhttp;
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) {
                document.getElementById("response").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "response.html", true);
        xmlhttp.send();
    }
}
</script>
</head>

<body>
<h3>AJAX Request/Response</h3>
<p></p>
<input id="input" type="button" value="Call AJAX" />
<p></p>
<div id="response"></div>