从关联数组打印JavaScript对象

时间:2018-07-25 13:11:13

标签: javascript php ajax

如果我只想console.log一个1(ANY)javaScript对象,该怎么办。当前显示的全部为1000。请查看Php和JS文件:

Server.php

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$data = array("coordinates" => array());

$sql = "SELECT Lng, Lat, URL FROM results LIMIT 1000";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data["coordinates"][] = $row;
    }
}
echo json_encode($data);

Index.js

{
$.ajax({
  dataType: "json",
  url: 'server.php',
  //data: [],
  data: {param: ""},
  success: function(data)
  {
    //JSON.parse(data);  
    console.log(data);
  addMarkers(data,map);
  }
});

}

3 个答案:

答案 0 :(得分:0)

它显示全部,因为您正在全部记录。您正在从数据库调用中返回1000个对象,这就是它记录所有内容的原因。

您可以使用类似这样的键通过键找到单个对象:

data.filter(x => x.myPropValue == "myString");

并记录下来。

答案 1 :(得分:0)

如果您希望JavaScript AJAX调用不记录所有1000个项目,则可能需要更改php代码($sql = "SELECT Lng, Lat, URL FROM results LIMIT 1000";)以使每个调用仅发送一个项目(例如,将1000替换为1),然后进行调整服务器逻辑,以在下一个AJAX调用中获得相应的下一项。

这也会使您的服务器和客户端更快,因为它减少了总数据量,但仍允许1000个或更多的项目。

您还可以尝试添加参数,以便可以告诉php代码JS代码需要获得多少项。

答案 2 :(得分:0)

它有助于了解您正在输出的json数据结构,以及如何访问由该json生成的对象中的某些元素。在您的情况下,最后得到一个名为data的对象(由.ajax成功回调定义)。然后,该对象仅包含一个带有对象数组的键名。关键名是coordinates。在每个数组值内,是数据库行返回中的一个对象。

如果您只想显示对象数组中的一个对象,这就是您所需要的:

console.log( data.coordinates[0] );

这将显示数组中的第一个对象(数组以[0]开头)。

console.log( data.coordinates[999] );

这将显示数组1000中的最后一个对象。

console.log( data.coordinates[ data.coordinates.length-1 ] );

使用自身作为确定器,它将显示可变大小数组中的最后一个对象。