Php 将XMLHttpRequest.responseText存储为变量:(
}Php 将XMLHttpRequest.responseText存储为变量:(,php,javascript,ajax,responsetext,Php,Javascript,Ajax,Responsetext,} 这是因为Ajax是异步的,当您执行此操作时,结果尚未设置(加上变量使其成为函数的本地变量,您必须将其删除) 最好的做法是将innerHTML行移到readystatechange回调中 try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest
这是因为Ajax是异步的,当您执行此操作时,
结果
尚未设置(加上变量
使其成为函数的本地变量,您必须将其删除)
最好的做法是将innerHTML
行移到readystatechange回调中
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var result = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "vartest.php", true);
document.getElementById('span').innerHTML = result;
ajaxRequest.send(null);
这是因为Ajax是异步的,并且当您这样做时,
result
尚未设置(加上var
使其成为函数的本地变量,您必须删除它)
最好的做法是将innerHTML
行移到readystatechange回调中
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var result = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "vartest.php", true);
document.getElementById('span').innerHTML = result;
ajaxRequest.send(null);
//这是在全球范围内
//所以它在任何地方都可以买到
**var结果**
函数ajaxFunction(){
var路径http://localhost/php/';
var fileName='yourCode.php';
var ajaxRequest;//使Ajax成为可能的变量!
试一试{
//Opera 8.0+、Firefox、Safari
ajaxRequest=新的XMLHttpRequest();
}捕获(e){
//Internet Explorer浏览器
试一试{
ajaxRequest=newActiveXObject(“Msxml2.XMLHTTP”);
}捕获(e){
试一试{
ajaxRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(e){
//出了点问题
警告(“你的浏览器坏了!”);
返回false;
}
}
}
//创建一个函数,该函数将接收从服务器发送的数据
ajaxRequest.onreadystatechange=函数(){
if(ajaxRequest.readyState==4){
**结果=ajaxRequest.responseText**
}
}
打开(“GET”,路径+文件名,true);
ajaxRequest.send(空);
}
//这是在全球范围内
//所以它在任何地方都可以买到
**var结果**
函数ajaxFunction(){
var路径http://localhost/php/';
var fileName='yourCode.php';
var ajaxRequest;//使Ajax成为可能的变量!
试一试{
//Opera 8.0+、Firefox、Safari
ajaxRequest=新的XMLHttpRequest();
}捕获(e){
//Internet Explorer浏览器
试一试{
ajaxRequest=newActiveXObject(“Msxml2.XMLHTTP”);
}捕获(e){
试一试{
ajaxRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(e){
//出了点问题
警告(“你的浏览器坏了!”);
返回false;
}
}
}
//创建一个函数,该函数将接收从服务器发送的数据
ajaxRequest.onreadystatechange=函数(){
if(ajaxRequest.readyState==4){
**结果=ajaxRequest.responseText**
}
}
打开(“GET”,路径+文件名,true);
ajaxRequest.send(空);
}
问题是,我想在其他地方使用结果作为变量,而不仅仅是在span标记中。有什么想法吗?@Earl您需要在onreadystatechange函数中设置该变量,并且该变量将在您无法预测的时间出现。您必须更改脚本以适应此情况。有可能进行同步调用chronous(以便脚本在调用之前暂停)但这是非常不鼓励的做法,因为它会使浏览器冻结视图,我对这一点非常陌生,我甚至不知道这意味着什么。很抱歉打扰大家。这个脚本对我来说并不重要,只是想寻找任何好的方法将responseText存储为变量。我非常了解如何将值存储为变量并传递它要获取php文件,不幸的是不是相反。@Earl要将响应文本存储在变量中,只需删除var
关键字,但不能指望它在调用后可用。Ajax调用是在后台进行的,完成后返回。这就是为什么一切都取决于调用的原因的结果需要在onreadystatechange回调中。问题是,我想在其他地方将结果用作变量,而不仅仅是在我的span标记中。有什么想法吗?@Earl您需要在onreadystatechange函数中设置变量,并且在无法预测的时间它将在那里可用。您必须更改脚本以满足以下要求:r这一点。有可能使调用同步(因此脚本会暂停,直到调用完成)但这是非常不鼓励的做法,因为它会使浏览器冻结视图,我对这一点非常陌生,我甚至不知道这意味着什么。很抱歉打扰大家。这个脚本对我来说并不重要,只是想寻找任何好的方法将responseText存储为变量。我非常了解如何将值存储为变量并传递它要获取php文件,不幸的是不是相反。@Earl要将响应文本存储在变量中,只需删除var
关键字,但不能指望它在调用后可用。Ajax调用是在后台进行的,完成后返回。这就是为什么一切都取决于调用的原因的结果需要在onreadystatechange回调中。如前所述,您不能指望结果
在调用后立即可用。您需要了解Ajax的异步性质,并根据OK重新设计应用程序。我将花更多时间研究此问题。感谢您的建议。如前所述,您不能依赖ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
document.getElementById('span').innerHTML = ajaxRequest.responseText;;
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
result = ajaxRequest.responseText;
}
}
ajaxRequest.open("GET", "vartest.php", true);
document.getElementById('span').innerHTML = result;
ajaxRequest.send(null);
}
<script language="javascript" type="text/javascript">
//this is in the global scope
//so it's available anywhere
**var result;**
function ajaxFunction(){
var path = 'http://localhost/php/';
var fileName = 'yourCode.php';
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
**result = ajaxRequest.responseText;**
}
}
ajaxRequest.open("GET", path+fileName, true);
ajaxRequest.send(null);
}
</script>