使用AJAX将数组返回到函数

时间:2010-07-06 15:32:33

标签: jquery

我只想询问如何返回或如何将返回的数组调用到函数中。

这是我的javascript

$(document).ready(function(){
alert(askServer());   

function askServer()
{
 var strUrl = "functions.php";
 var strReturn = new Array();

 jQuery.ajax({
  url:strUrl, success:function(html){strReturn = html;}, async:false
 });

 return strReturn;
}
});

这是来自我的functions.php ..

<?php
$dirArray = Array('data_1','data_2','data_3');
echo $dirArray;
?>

我的问题是它会提醒单词“Array”/...

可以这样做吗?

alert(askServer()[0]);

提醒“data_1”?

2 个答案:

答案 0 :(得分:2)

你有几个缺点:

首先你不能以这种方式分配strReturn,因为在Ajax结束之前会执行return strReturn;(哦,我看到你有async: false,但这总是一个坏主意。)

其次,你不能以这种方式发送PHP数组。它显示Array,因为如果将数组转换为字符串会发生这种情况。

使用json_encode()将数组转换为JSON

<?php
$dirArray = Array('data_1','data_2','data_3');
echo json_encode($dirArray); // will now be '["data_1", "data_2","data_3"]'
?>

并在客户端执行:

$(document).ready(function(){

askServer(function(data){
    alert(data[0])
});   

function askServer(callback)
{
    var strUrl = "functions.php";

    jQuery.ajax({
       url:strUrl, 
       success:callback, 
       dataType: "json" 
    });

}
});

这是发生的事情:您将回调函数传递给askServer,该函数应在Ajax请求完成后执行。您指定响应将是JSON字符串,以便jQuery自动将其转换为Object / Array。

答案 1 :(得分:1)

因为你无法回显数组。

在PHP和JS之间交换数组(作为逻辑结构)有三种(可能甚至更多:])可能性:

1.在PHP方面爆炸,破坏页面中的JS例程

explode获取数组的值并将它们与您的字符串粘合在一起(即'GLUE'):

array('str1','str2') => 'str1GLUEstr2' with
implode('GLUE', $array);

2.,JSON:在http://www.json.org读取 3.,XML:阅读http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html