通过 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的主要内容,如果未能解决你的问题,请参考以下文章

Java数组,如何通过JSP表单将数组传递到后台?

将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP

通过 Ajax 将多个复选框传递给 PHP

PHP传递通过AJAX传递JSON对象数组到前台,前台解析,遍历JSON

通过 AJAX 将两个 JSON 模型对象从 PHP 传递到 JS

将数组数组从 Ajax 传递给控制器