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

时间:2010-08-03 14:44:12

标签: php javascript jquery 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文件中的代码是

<?

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

?>

7 个答案:

答案 0 :(得分:17)

从AJAX运行的文件中运行index.html时。但问题出现的原因是您正在查看地址为“file://....../index.html”的文件,并且您正在向“http://localhost/..../something.php”发出一个AJAX请求,这是因为交叉而不允许网站脚本。所有AJAX请求必须转到同一个域/服务器。

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

答案 1 :(得分:7)

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

答案 2 :(得分:6)

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

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

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

为什么要在本地运行它?

答案 3 :(得分:5)

Ajax对其他人提到的file://协议不起作用。 也许你想要像http://www.appcelerator.com/这样的东西用html / js / css

创建桌面应用程序

答案 4 :(得分:3)

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

答案 5 :(得分:3)

我对自己感到粉红色,因为阅读人们发布的有关如何在没有Web服务器的情况下无法“本地”执行AJAX的答案让我找到了解决方案。使用JavaScript,XMLHttpRequest()对象的方法主要由浏览器生成,您需要省略Web服务器生成的方法(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>

答案 6 :(得分:2)

阅读SOP。出于安全原因,阻止从当前域以外的域访问数据。