2014-04-20 109 views
0

我正在嘗試使AJAX調用返回給我一個php文件的回顯,但它不工作... 所有文檔都在同一個文件夾中。無法獲得Ajax調用的返回

.html文件(JavaScript的一部分):

<script> 

function GetData() 
{ 
var xmlhttp; 

    xmlhttp=new XMLHttpRequest(); 

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    return xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","test.php",true); 
xmlhttp.send(); 
} 

var Order2 = GetData(); 
document.getElementById('Order2').innerHTML = Order2; 
</script> 

PHP文件:

<?php 
echo "HELLO!"; 
?> 

有誰知道這是爲什麼不工作?我的瀏覽器是Google Chrome。

感謝提前:)

+0

我認爲該主題的用戶使用jquery,而我不是。 – Topast

+1

@Topast - 原理是一樣的。 – Quentin

+2

@Topast閱讀這個問題的答案。有針對jQuery和XHR用戶的解決方案。詳細介紹了您的問題。 –

回答

3

當你與異步操作(AJAX,超時)的工作,你應該改變你的方法。類似這樣的:

function GetData(callback) { 

    var xmlhttp = new XMLHttpRequest(); 

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

    xmlhttp.open("GET", "test.php", true); 
    xmlhttp.send(); 
} 

GetData(function(data) { 
    document.getElementById('Order2').innerHTML = data; 
}); 

您不能返回,因爲當您返回響應時尚不可用。這就是爲什麼你使用回調函數一旦響應就會被調用。

+0

+1是的,AJAX中的「異步」意味着你不會馬上得到一個返回值,這就是爲什麼你需要一個回調,只要收到結果就會被調用。 –

+0

似乎是這樣的問題。謝謝 :) – Topast