通过 AJAX 将数组从 php 传递到 javascript
Posted
技术标签:
【中文标题】通过 AJAX 将数组从 php 传递到 javascript【英文标题】:Passing array through AJAX from php to javascript 【发布时间】:2013-01-06 23:59:39 【问题描述】:我需要从脚本 php 生成一个数组。我有数据库中每个用户的纬度和经度。 我使用以下代码(file.php)从数据库中获取值:
$query = "SELECT Latitude, Longitude FROM USERS";
$result=mysql_query($query);
$array=array();
while ($data = mysql_fetch_array($result))
$array[]=$data['Latitude'];
$array[]=$data['Longitude'];
echo $array;
我使用 ajax 调用此代码:
$.post('./file.php',
function( result )
alert(result);
);
但即使在脚本 php 中数组是正确的(如果我回显数组 [25] 我获得正确的值)在 javascript 中我获得“未定义”。 如何以正确的方式获取数组? 谢谢!
编辑:用 json_encode($array); 编码后在 php 和 JSON.parse(result) 在 javascript 中似乎不起作用。 在控制台中我有数组,但我无法访问它的值。 (Array[0] 给了我“未定义”)。
【问题讨论】:
如果你的 PHP 脚本工作正常并输出任何东西,你不应该在 JavaScript 中得到undefined
。
【参考方案1】:
使用这个
echo json_encode($array);
在服务器端
和
var arr=JSON.parse(result);
在客户端
【讨论】:
如果我做 arr[0] 我得到“未定义”,即使在解析后,结果警报给了我正确的数组 登录控制台收到结果并粘贴到这里。 如果我在控制台输入 arr 我得到: Array[1164] [0 … 99] 0: "45.4655" 1: "9.18652" 2: "45.4655" 3: "9.18652" 4: "45.4655 “ 5:“9.18652” 6:“45.4655” 7:“9.18652” 8:“45.4655” 9:“9.18652” 10:“45.4655” ecc。抄送。 @user1903898:不确定,但看起来服务器返回数组数组。服务器端的$array
不是你想的那样。尝试将一些测试数据传递给客户端,例如echo json_encode(array('item 0', 'item 1', 'item 2', 'item 3'))
。在客户端尝试登录arr[0]
。如果它以这种方式工作,那么您就是在错误的地方寻找错误。【参考方案2】:
正如 Ruslan Polutsygan 提到的,你可以使用
echo json_encode($array);
在 PHP 端。
在 Javascript 端,您可以简单地将 DataType 添加到 $.post()-Function:
$.post(
'./file.php',
function( result )
console.log(result);
,
'json'
);
result-Parameter 是解析后的 JSON-Data。
您还可以在 PHP 脚本中设置正确的 Content-Type。然后 jQuery 应该会自动解析从您的 PHP 脚本返回的 JSON 数据:
header('Content-type: application/json');
见http://api.jquery.com/jQuery.post/http://de3.php.net/json_encode
【讨论】:
【参考方案3】:需要将php数组转成json,试试:
echo json_encode($array);
jQuery 应该能够看到它返回的 json 并自动从中创建一个 javascript 对象。
$.post('./file.php', function(result)
$.each(result, function()
console.log(this.Latitude + ":" + this.Longitude);
);
);
【讨论】:
jQuery 会为你解析吗?以上是关于通过 AJAX 将数组从 php 传递到 javascript的主要内容,如果未能解决你的问题,请参考以下文章
将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP
PHP传递通过AJAX传递JSON对象数组到前台,前台解析,遍历JSON