У меня есть следующая функция в файле .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))); ?>
Когда вы запускаете свой index.html из файла, работает AJAX. Но проблема возникает из-за того, что вы просматриваете файл по адресу «файл: //……/index.html», и вы делаете запрос AJAX на « http: //localhost/…./something. php ", который НЕ ДОПУСКАЕТСЯ из-за межсайтового скриптинга. Все запросы AJAX должны поступать на тот же домен / сервер.
Это предполагает, что вы просматриваете файл, дважды щелкнув его и все еще делающий запрос AJAX на веб-сервер.
AJAX нужен веб-сервер для связи, чтобы он мог получать любые данные; иначе его просто разговаривали со стеной. Запуск сценария без веб-сервера похож на попытку сделать вызов без сотовой службы. : D
Веб-сервер – это именно то, что обрабатывает все детали для вас.
Вы не можете отправлять POST без веб-сервера для публикации. HTTP = веб-протокол, поэтому вы не можете иметь URL-адрес HTTP без целевого веб-сервера.
Веб-сервер также является процессом, который принимает ваш запрос на страницу PHP и запускает интерпретатор PHP, управляя входами и выходами.
Почему вы хотите запустить его локально?
Ajax не работает над файлом: // протокол, как упоминалось другими. Возможно, вам нужно что-то вроде http://www.appcelerator.com/ для создания настольных приложений с помощью html / js / css
Прочитайте SOP . Доступ к данным из домена, отличного от текущего, блокируется по соображениям безопасности.
Вы не можете этого сделать, вы должны открыть свой html-файл также с адреса веб-сервера, например http://localhost/yoursite/file.html
или даже с удаленным URL-адресом сервера. Вам нужно пройти через URL сервера / сервера.
Я щекочусь с розовым, потому что читаю ответы, которые люди рассказывают о том, как вы не можете делать 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>