2014-04-20 80 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