javascript - 想要打印 json 对象的循环但无法从 json 对象访问值
问题描述
当我在我的 php 代码中回显时json_encode($state);
,它将在控制台中以这些格式显示数据
{"branchid":"71","branchareaid":"4","branchname":"Zaidy","branchno":"11","branchnamearabic":"\u0625\u064a\u0645\u064a \u0632\u064a\u062f\u064a","branchaddress":"Unnamed Road, Al Hamra and Umm Al Jud, Makkah 24331, Saudi Arabia","branchlat":"21.38958330","branchlong":"39.70306130","branchstatus":"1","mobileno":"0566689175","googlemaplink":"https:\/\/goo.gl\/maps\/rK3oKf1wfVu","workingHours":"6 am to 3 am"}
当我想通过循环在我的 ajax 代码中打印时,JSON 对象的两侧花括号用逗号分隔,它会给出错误并且不打印 li 中的值
<?php
include "admin/includes/dbconnection.php";
if($_POST){
$state = $_POST['state'];
}else{
$state = 1;
}
?>
<?php
$query = "SELECT * FROM branches WHERE branchareaid = {$state}";
$res = mysqli_query($conn,$query);
while($state = mysqli_fetch_assoc($res)){
echo json_encode($state);
}
?>
这是我的 ajax 代码,它获取记录但循环没有打印 JSON 对象的值
$(document).ready(function(){
var url = "ajax-states.php";
$("#state").change(function(){
$.ajax({
type: "POST",
data: {state: $('#state').val()},
url: url,
success: function(result){
$("#result").html(result);
console.log(result);
//var c=0;
$.each( result, function( index, branch) {
//var state = states[c];
$('.locations').append("<li>"+branch.branchname+"</li>");
c++;
});
}
});
});
});
jquery.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in
{"branchid":"71","branchareaid":"4","branchname":"Zaidy","branchno":"11","branchnamearabic":"\u0625\u064a\u0645\u064a \u0632\u064a\u062f\u064a","branchaddress":"Unnamed Road, Al Hamra and Umm Al Jud, Makkah 24331, Saudi Arabia","branchlat":"21.38958330","branchlong":"39.70306130","branchstatus":"1","mobileno":"0566689175","googlemaplink":"https:\/\/goo.gl\/maps\/rK3oKf1wfVu","workingHours":"6 am to 3 am"}
at C (jquery.min.js:2)
at Function.each (jquery.min.js:2)
at Object.success (new-find-a-store.php:553)
at u (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
解决方案
如我所见,您正在尝试像列表一样迭代对象,该代码似乎不起作用。一种方法可能如下:
- 声明一个变量来存储对象的键列表,witch 是一个字典
- 迭代抛出此列表,并根据键列表中的该项选择对象的值。
var listOfKeys = (Object.keys(result));
for (var i = 0; i < Object.keys(result).length; i++) {
$('.locations').append("<li>"+result[listOfKeys[i]]+"</li>");
}
如果您想使用对象的任何特定属性,只需:
$('.locations').append("<li>"+result.nameOfTheProperty+"</li>");
推荐阅读
- python - Python - 如何标记附加轴/颜色条
- xamarin.ios - Xamarin iOS 应用程序无法构建 - Arch,actool 以代码 72 退出
- python - 在数据框中转换测量单位
- python - app [worker.1]:bash:* .py:找不到命令
- mongodb - MongoDB 可以定期失败请求而不会出错吗?
- ruby-on-rails - RAILS 6 + Webpacker -- 生产环境中 packs/css|js/application-* 的路由错误
- c# - 创建一个 ASP.net MVC Web 应用程序,详细信息如下:
- html - 如何在高度方面拉伸幻灯片/轮播?
- javascript - Firefox - 内容脚本未加载
- java - 春天的gzip压缩不是我想的那样吗?