使用Javascript访问JSON元素
我有一个简单的JSON对象:使用Javascript访问JSON元素,javascript,json,getjson,Javascript,Json,Getjson,我有一个简单的JSON对象: [{"k":51.39920565355378,"B":0.087890625}] console.log(jsonData) //[{"k":51.39920565355378,"B":0.087890625}] function getMarkersByTripId($tripId) { if ($bdd = mysqli_connect(_BDD_HOST_, _BDD_USERNAME_, _BDD_PASSWORD_, _BDD_NAM
[{"k":51.39920565355378,"B":0.087890625}]
console.log(jsonData) //[{"k":51.39920565355378,"B":0.087890625}]
function getMarkersByTripId($tripId)
{
if ($bdd = mysqli_connect(_BDD_HOST_, _BDD_USERNAME_, _BDD_PASSWORD_, _BDD_NAME_)) {
$sql = 'SELECT DISTINCT `markers` FROM `trip` WHERE `trip_id` = "'.$tripId.'"';
$req = mysqli_query($bdd, $sql);
if ($req) {
$row = mysqli_fetch_row($req);
echo json_encode($row[0]);
}
else {
echo json_encode(array('status' => 'failure'));
}
}
if ($bdd) {
mysqli_close($bdd);
}
}
我想用Javascript访问k和B,下面是我的代码:
var jsonData = JSON.parse(jsonText);
console.log(jsonData.k); //Undefined
无论我尝试过什么,它总是返回未定义的结果,但当我显示jsonData时,我可以看到JSON对象的所有描述:
[{"k":51.39920565355378,"B":0.087890625}]
console.log(jsonData) //[{"k":51.39920565355378,"B":0.087890625}]
function getMarkersByTripId($tripId)
{
if ($bdd = mysqli_connect(_BDD_HOST_, _BDD_USERNAME_, _BDD_PASSWORD_, _BDD_NAME_)) {
$sql = 'SELECT DISTINCT `markers` FROM `trip` WHERE `trip_id` = "'.$tripId.'"';
$req = mysqli_query($bdd, $sql);
if ($req) {
$row = mysqli_fetch_row($req);
echo json_encode($row[0]);
}
else {
echo json_encode(array('status' => 'failure'));
}
}
if ($bdd) {
mysqli_close($bdd);
}
}
以下是检索我的JSON对象的服务器代码:
[{"k":51.39920565355378,"B":0.087890625}]
console.log(jsonData) //[{"k":51.39920565355378,"B":0.087890625}]
function getMarkersByTripId($tripId)
{
if ($bdd = mysqli_connect(_BDD_HOST_, _BDD_USERNAME_, _BDD_PASSWORD_, _BDD_NAME_)) {
$sql = 'SELECT DISTINCT `markers` FROM `trip` WHERE `trip_id` = "'.$tripId.'"';
$req = mysqli_query($bdd, $sql);
if ($req) {
$row = mysqli_fetch_row($req);
echo json_encode($row[0]);
}
else {
echo json_encode(array('status' => 'failure'));
}
}
if ($bdd) {
mysqli_close($bdd);
}
}
函数witch将我的JSON对象添加到数据库中:
function actionSaveNewtrip($title, $status, $markers)
{
if ($bdd = mysqli_connect(_BDD_HOST_, _BDD_USERNAME_, _BDD_PASSWORD_, _BDD_NAME_)) {
$markers = mysqli_real_escape_string($bdd, $markers);
$sql = 'INSERT INTO `trip` (title, status, markers) VALUES("'.$title.'", "'.$status.'", "'.$markers.'")';
$req = mysqli_query($bdd, $sql);
if ($req) {
echo json_encode(array('status' => 'success'));
}
else {
echo json_encode(array('status' => 'failure'));
}
}
if ($bdd) {
mysqli_close($bdd);
}
}
$markers是我插入到数据库中的JSON对象
我想知道像数组一样访问k和B有什么不对,谢谢。您的JSON将解析为一个包含一个对象的数组。试一试
console.log(jsonData[0].k);
外部的
[]
使其成为一个数组。因为它被包装在一个数组中,所以您需要访问第一个数组元素
jsonData[0].k
您可以在以下代码段中看到它的工作原理:
var jsonData=JSON.parse('[{“k”:51.399205653578,“B”:0.087890625}');
警报(jsonData[0].k)
仍然未定义,我尝试过。在您的浏览器控制台中尝试:JSON.parse(“[{“k”:51.3992056535378,“B”:0.087890625}])[0].k
-它肯定有效。是的,如果我硬编码JSON描述,但不使用我从MySQL数据库获取的JSON对象,它就有效。当我使用console.log(jsonData)时,我有:[“[{”k:47.635783590864854,“B”:2.8125}]”可能我的JSON格式不正确,但我还不知道如何修复它?仍然被这个错误困扰。在浏览器控制台中试试这个:JSON.parse(“[{”k:51.39920565355355378,“B”:0.087890625}”)[0]。k
-它确实有效。@Katcha我无法重现你的问题。我在答案中插入了一段代码片段,效果很好。当jsonData=[“[{“k”:47.635783590864854,“B”:2.8125}]”时不起作用。这与您发布的内容完全不同。如果你不能准确地描述你的问题,你就不能期望人们提供准确的帮助@我同意你的观点,很抱歉。@Katcha好吧,不管怎样。处理JSON响应可能会令人困惑,因为浏览器console.log()
code打印对象的方式可能是“不诚实的”。您在注释中添加的内容似乎使您的服务器返回一个JSON编码的数组,该数组包含一个JSON编码的字符串;也就是说,由于某种原因,存在双重编码。如果您可以访问创建响应的服务器代码并可以发布响应,这可能有助于确定发生了什么。