繁体   English   中英

从关联数组打印JavaScript对象

[英]Printing JavaScript Objects from Associatve Array

如果我只想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);
  }
});

}

之所以显示全部,是因为您正在全部记录。 您将从数据库调用中返回1000对象,这就是为什么它记录了所有对象的原因。

您可以使用类似以下内容的键找到单个对象:

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

并记录下来。

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

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

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

它有助于了解您正在输出的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 ] );

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM