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

IT技术 php javascript jquery ajax
2021-03-01 08:06:20

我在 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 菜鸟。

getdata.php 文件中的代码是

<?

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

?>
6个回答

当您从文件运行 index.html 时,AJAX 可以工作。但是出现问题是因为您正在查看地址为“file://....../index.html”的文件,并且您正在向“ http://localhost/..../something ”发出 AJAX 请求。 php ",由于跨站点脚本,这是不允许的。所有 AJAX 请求都必须发送到同一个域/服务器。

这是假设您正在通过双击文件来查看文件,并且仍然向 Web 服务器发出 AJAX 请求。

此外,即使 URL 是相对的,它也不会工作,否则,在 CD 上运行的网站将可以访问整个文件系统。
2021-04-26 08:06:20

AJAX 需要一个网络服务器与之通信才能检索任何数据;否则它只是对着墙说话。在没有网络服务器的情况下运行脚本就像尝试在没有单元服务的情况下进行呼叫。:D

Web 服务器正是为您处理所有细节的地方。

如果没有要发布到的 Web 服务器,则无法发布。HTTP = Web 协议,因此如果没有要定位的 Web 服务器,您就不能拥有 HTTP URL。

Web 服务器也是接收您对 PHP 页面的请求并运行 PHP 解释器、管理输入和输出的过程。

为什么要在本地运行?

我认为他正在本地运行网页(通过 C:\...\index.html),但他仍在向 Web 服务器发出请求(使用 php)。我认为这是一个跨站点脚本问题(请参阅我的回答),而不是解析问题。
2021-04-26 08:06:20

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

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