2015-11-05 181 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之後,事情仍然不適用於我... –

相關問題