Jquery:在没有Web服务器的情况下在本地运行AJAX
我在index.html的.js文件中有以下函数
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文件中的代码是
rand(5000, 20000),"BSE"=>rand(5000, 20000))); ?>
当您从文件中运行index.html时,AJAX可以正常运行。 但问题出现的原因是您在地址“file://……/index.html”查看文件,并且您正在向“ http://localhost/…./something ”发出AJAX请求。 php “因为跨站点脚本而不允许这样做。 所有AJAX请求必须转到同一个域/服务器。
这是假设您通过双击它并仍然向Web服务器发出AJAX请求来查看文件。
AJAX需要一个网络服务器来与之通信,以便能够检索任何数据; 否则它只是在墙上说话。 在没有网络服务器的情况下运行脚本就像尝试在没有小区服务的情况下进行呼叫一样。 :d
Web服务器正是处理所有细节的原因。
如果没有Web服务器发帖,您就无法发帖。 HTTP = Web协议,因此您无法在没有Web服务器的情况下使用HTTP URL。
Web服务器也是处理您对PHP页面的请求并运行PHP解释器,管理输入和输出的过程。
为什么要在本地运行它?
Ajax对其他人提到的file://协议不起作用。 也许你想要像http://www.appcelerator.com/这样的东西用html / js / css创建桌面应用程序
阅读SOP 。 出于安全原因,阻止从当前域以外的域访问数据。
您不能这样做,您也应该从Web服务器地址打开您的html文件,例如http://localhost/yoursite/file.html
甚至远程服务器URL。 您需要浏览服务器/服务器URL。
我自己也是粉红色的,因为阅读人们发布的关于如何在没有Web服务器的情况下无法“本地”执行AJAX的答案让我找到了解决方案。 使用JavaScript,XMLHttpRequest()对象的方法主要由浏览器生成,您需要省略Web服务器生成的方法(xmlhttp.status == 200)。 以下作品:
AJAX Request/Response