0

好的,我想通过 ajax 将 PHP 变量转换为 javascript 变量。

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

shuffle($new_m); 
echo json_encode($new_m);

然后我有一个 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);
}

当此代码不在此处的单独页面上并且 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>

什么也没有发生。我在这个 ajax 和 javascript 方面还是新手。感谢您提前提供帮助。

4

1 回答 1

3

你的问题是,当alert( myvar);执行时,对服务器的请求还没有发生,并且变量是未定义的(更不用说我认为变量超出了范围,所以你无法访问它)。

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

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

然后,您可以摆脱标签onload内的内容。<body>

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

于 2013-01-13T02:16:04.903 回答