我提交表单,但需要我的表单,先运行一些检查,所以我打电话在一些JavaScript需要运行一个XMLHttpRequest,看看是否设置了一些东西在另一个PHP脚本。我能得到的值返回,但只有输出,其中我得到的响应区域内的消息,把这个变成一个变量,并使用其他地方不工作的任何企图,这是我的脚本:Javascript的XMLHttpRequest结果将不会存储在一个变量供其他用途
function validateform() {
var complete = "Please fill in the following fields:";
var temp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
temp=xmlhttp.responseText;
alert(temp);
}
}
xmlhttp.open("GET","hrp/recaptcha/verify.php",true);
xmlhttp.send();
alert(temp);
第一“alert(temp)”被输出,但是在代码结束后的那个总是说undefined,所以我不能在外面使用它。
任何想法? 感谢:d
AJAX异步运行,您需要等待该值返回。第二个警报立即运行并且没有任何值,第一个警报与数据实际收到时运行的回调一起运行。 – TheZ 2012-07-24 16:24:20
啊,是的,这是有道理的,我将如何让它等待响应而不先运行其他代码? – user1482082 2012-07-24 16:30:57
您可以使用承诺 - 我发现了很多StackOverflow有关使用XMLhttpRequest承诺的答案 – 2017-03-02 14:10:34