通过ajax将php变量转换为javascript

通过ajax将php变量转换为javascript,php,javascript,ajax,Php,Javascript,Ajax,Ok我尝试通过ajax将PHP变量转换为javascript变量 我有一些php代码,使这个变量看起来像这样:(我不会把整个代码,因为它的工作,所以只有这个主题的相关代码。我有一个新的变量是数组,我想传递它) 然后我有一个js文件,它应该捕捉到回声,它看起来像这样: function getXMLHttp() { var xmlHttp try { //Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest

Ok我尝试通过ajax将PHP变量转换为javascript变量

我有一些php代码,使这个变量看起来像这样:(我不会把整个代码,因为它的工作,所以只有这个主题的相关代码。我有一个新的变量是数组,我想传递它)

然后我有一个js文件,它应该捕捉到回声,它看起来像这样:

function getXMLHttp() 
{
  var xmlHttp

  try
  {
    //Firefox, Opera 8.0+, Safari
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    //Internet Explorer
    try
    {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e)
      {
        alert("Your browser does not support AJAX!")
        return false;
      }
    }
  }
  return xmlHttp;
}

function MakeRequest() 
{
  var xmlHttp = getXMLHttp();

  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      var myvar = new Array();
    var myvar=JSON.parse(xmlHttp.responseText);


return myvar;


    }

  }
   xmlHttp.open("GET", "showimage.php", true);
  xmlHttp.send(null);
}
当这段代码不在像这里这样的单独页面上时,当在函数中使用is myvar时,它就会工作(因为我已经在另一个页面上成功地使用了这段代码)。所以我认为我的问题是没有返回正确的变量或者没有以正确的方式返回它

最后一段代码是这个myvar应该使用的部分,它看起来像:

<script type="text/javascript" src="js/shuffle.js"></script>
<title>undf</title>
</head>
<body onload="MakeRequest()">


<script type="text/javascript">
alert(myvar);
var pos = 0;
var imgs = myvar;
</script>

undf
预警(myvar);
var-pos=0;
var-imgs=myvar;

什么也没发生。我对ajax和javascript还是新手。提前感谢您的帮助。

您的问题是当
警报(myvar)时已执行,对服务器的请求尚未发生,并且变量未定义(更不用说我认为变量超出范围,因此您无法访问它)

您应该设置JS,以便在加载窗口时,执行请求以检索数据,然后读取数据:

<script type="text/javascript">
window.onload = function() {
    var myvar = MakeRequest();
    alert( myvar);
}
</script>

window.onload=函数(){
var myvar=MakeRequest();
预警(myvar);
}
然后,您可以去掉
标记中的
onload


请注意,我不能完全确定您是否正确地从
MakeRequest()
函数返回值,因为
返回值
在xmlhttp回调中,而不在函数中。您应该对此进行调查并验证。

您的问题是当
警报(myvar)时已执行,对服务器的请求尚未发生,并且变量未定义(更不用说我认为变量超出范围,因此您无法访问它)

您应该设置JS,以便在加载窗口时,执行请求以检索数据,然后读取数据:

<script type="text/javascript">
window.onload = function() {
    var myvar = MakeRequest();
    alert( myvar);
}
</script>

window.onload=函数(){
var myvar=MakeRequest();
预警(myvar);
}
然后,您可以去掉
标记中的
onload


请注意,我不能完全确定您是否正确地从
MakeRequest()
函数返回值,因为
返回值
在xmlhttp回调中,而不在函数中。你应该对此进行调查并核实。

我正要提到类似的事情。我还认为jQuery将是一种更好的ajax IMO方式。是的,jQuery会更好,但我也认为自己做一次事情也很好@用户,是的,这将替换您当前的
标记。是的,它返回未定义的变量。将查看返回,现在有问题,我正要提到类似的内容。我还认为jQuery将是一种更好的ajax IMO方式。是的,jQuery会更好,但我也认为自己做一次事情也很好@用户,是的,这将替换您当前的
标记。是的,它返回未定义的变量。将查看返回,现在有一个问题,另外,您可能还需要查看类似jQuery()的JavaScript框架由于它们显著简化了AJAX过程并减少了维护自己手工制作的AJAX库的开销,因此您可能还想看看像jQuery()这样的JavaScript框架,因为它们显著简化了AJAX过程并减少了维护自己手工制作的AJAX库的开销