从 AJAX 调用 javascript 变量中获取结果

Get resultfrom AJAX call into javascript variable

一段时间以来,我一直在努力寻找解决方案,但我似乎无法让它发挥作用。

我在做什么: 我正在尝试从我的 php 文件中获取一个数组,以便我可以在我的 javascript.

中使用它

Example.php

$arr =  Array(
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(3,3,3,3,3,3,0,0,0,0,1,0,0,0,0,0,3,3,3,3,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
            Array(0,3,3,3,3,3,3,0,0,0,1,0,0,0,3,3,3,3,3,0,0,0,0,0,3,3,0,1,1,1,1,1,1,1,0,0,0,0,0,0),
            Array(0,0,0,0,0,0,3,3,3,3,1,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,1,3,3,3,3,3,1,1,1,1,0,0,0),
            Array(0,0,0,0,0,0,0,3,3,3,1,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,3,3,3,3,3,3,3,1,0,0,0),
            Array(0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,3,3,3,1,1,0,0),
            Array(0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,3,3,1,1,1),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,3,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,3,3,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,3,3,3,3,3,3,3,3,3,3),
            Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3)
           );

echo json_encode($arr);

我用 javascript 函数调用它

function getArray(){
       $.ajax({
           url: 'Example.php',
           success: function(resultarray) {
                alert("success " + resultarray);
                return levelarray;
           },
           error: function(xhr, status, error) {
                //alert(xhr.responseText);
           }
      }); 
 }

这个 alert("success " + resultarray); 做 return 数组应该的样子。

但是当我想在我的 javascript 中使用它时,它一直说它是未定义的,或者它什么也没说。

我这样试过:

var test = getArray();
alert("result= "+ test);

所以这个警报一直 return 告诉我错误或空值。

有人知道我该怎么做吗?

提前谢谢你。

如果您想在另一个 js 函数中使用成功结果,请将该函数放在 ajax 的 success() 中。 ajax 运行 是异步的,因此它不会 运行 与其他函数按顺序排列。只需做类似的事情:

$.ajax({
    url: 'Example.php',
    success: function(data) {
        // myFunction(), do something here with data from ajax;
    },
});

这与javascript的异步性质有关。而不是像

这样使用你的函数
var test = getArray();

按照

的思路尝试一下
function getArray(){
   $.ajax({
       url: 'Example.php',
       success: function(resultarray) {
            alert("success " + resultarray);
            doSomethingWithMyTiles(resultarray);
       },
       error: function(xhr, status, error) {
            //alert(xhr.responseText);
       }
  }); 
 }

function doSomethingWithMyTiles(resultarray){
 //do stuff

}