Jquery:在没有Web服务器的情况下在本地运行AJAX

Ste*_*ven 13 javascript php ajax jquery

我在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"
 });

}
Run Code Online (Sandbox Code Playgroud)

当我在像wamp这样的网络服务器中运行它时,这很好用.但是我想在本地运行index.html,即没有网络服务器,用户只需双击index.html即可运行,但事实并非如此.数据始终为空.可能是什么问题呢?对不起,我是一个超级JQuery Noob.

getdata.php文件中的代码是

<?

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

?>
Run Code Online (Sandbox Code Playgroud)

Bob*_*mer 17

当您从文件中运行index.html时,AJAX可以正常运行.但问题出现的原因是您正在查看地址为"file://....../index.html"的文件,而您正在向" http://localhost/..../something "发出AJAX请求. php "因为跨站点脚本而不允许这样做.所有AJAX请求必须转到同一个域/服务器.

这是假设您通过双击它并仍然向Web服务器发出AJAX请求来查看文件.


Gor*_*son 7

AJAX需要一个网络服务器进行通信,以便能够检索任何数据; 否则它只是在墙上说话.在没有网络服务器的情况下运行脚本就像试图在没有小区服务的情况下进行呼叫一样.:d


Fos*_*sco 6

Web服务器正是为您处理所有细节的原因.

如果没有Web服务器发帖,您就无法发帖.HTTP = Web协议,因此您无法在没有Web服务器的情况下使用HTTP URL.

Web服务器也是处理您对PHP页面的请求并运行PHP解释器,管理输入和输出的过程.

为什么要在本地运行它?

  • 我认为他在本地运行网页(通过C:\ ...\index.html),但他仍然向Web服务器发送请求(使用php).我认为这是一个跨站点脚本问题(请参阅我的回答),而不是解析问题. (2认同)

BGe*_*sen 5

如其他人所提到的,Ajax不适用于file://协议.也许你想要像http://www.appcelerator.com/这样的东西用html/js/css创建桌面应用程序


Sar*_*raz 3

你不能这样做,你也应该从网络服务器地址(例如http://localhost/yoursite/file.html,甚至远程服务器网址)打开你的 html 文件。您需要通过服务器/服务器 url。