2015-11-05 166 views
0

我正在使用此代码从php文件中获取一些数据。该PHP文件有非常简单的编码,我已检查它是否有效地工作。它看起来像是我的JavaScript代码中没有发送请求的错误。我的AJAX代码下面贴:Ajax请求不会触发。为什么?

var jax=new XMLHttpRequest(); 

jax.onreadystatechange = function() { 
    if (jax.readyState == 4 && jax.status == 200) 
    alert(jax.responseText); 
    } 

jax.open("GET","http://marked.byethost12.com/response.php?req=1&rnd="+Math.random(),true); 
jax.send(); 

自PHP文件中的代码是这样的:

<?php 
$request=$_GET["req"]; 
if($request=="1") //requesting the initiation of protocol 
    echo 'alert("hello. the protocol has been initiated!")'; 
else 
    echo "alert! error in req variable. variable not present or value is not 1"; 
?> 
+1

脚本的地址(包括子域,目录等)是什么?浏览器的开发人员控制台中是否有任何错误? –

+0

我正在使用本地硬盘上的脚本(ajax文件),未上传到任何Web服务器。 Firefox的开发控制台中的错误字符串会这样读取:***跨域请求被阻止:相同的源策略不允许读取http://marked.byethost12.com/response.php?req=1&rnd=0.1276921559338826处的远程资源。 (原因:缺少CORS头'Access-Control-Allow-Origin')*** –

+0

您可能遇到跨域问题。看看这个:http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain – Marks

回答

0

我认为问题是,你送它作为一个异步调用。如果你这样做:

jax.open("GET","http://marked.byethost12.com/response.php?req=1&rnd="+Math.random(),false);

你会看到一个响应,如果你尝试一下在浏览器的控制台。

编辑:正如其他评论中提到的,CORS是一个不同的野兽,你也必须处理。

+0

如果我把它作为一个同步调用发送,我将挂在浏览器功能长**长**时间为该页面需要多次与php脚本进行通信,整个通信可能需要将近40秒才能完成。从消费者的角度来看,您将非常厌倦这么长时间没有响应的页面。这就是为什么我使用(非常建议由专家)真实并进行异步调用。 –

+0

我意识到我说了很多话。我的意思是,你没有处理异步函数,将它设置为false将是一个更简单的演示,以查看它是否在浏览器控制台中工作。在浏览器中进行同步调用确实是一个糟糕的主意。尽管如此,我没有任何问题可以运行你提供的代码。我只是遇到了一个CORS问题。 – Coss

+0

哈哈。是。它的'CORS搞乱了事情。直到今天,当这种丑陋的觉醒袭击我时,我才知道这是一个问题。我修改了我的php文件以包含行**头('Access-Control-Allow-Origin:*'); **在<?php之后,事情仍然不适用于我... –

相关问题