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>