我只想询问如何返回或如何将返回的数组调用到函数中。
这是我的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”?
答案 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