Javascript 想要打印json对象的循环,但可以';t从json对象访问值
当我在php代码Javascript 想要打印json对象的循环,但可以';t从json对象访问值,javascript,php,json,ajax,loops,Javascript,Php,Json,Ajax,Loops,当我在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, Ma
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)
$(文档).ready(函数(){
var url=“ajax states.php”;
$(“#状态”).change(函数(){
$.ajax({
类型:“POST”,
数据:{state:$('#state').val()},
url:url,
成功:功能(结果){
$(“#结果”).html(结果);
控制台日志(结果);
//var c=0;
$.each(结果、函数(索引、分支){
//var状态=状态[c];
$('.locations')。追加(“”+branch.branchname+” ”;
C++;
});
}
});
});
});
jquery.min.js:2未捕获类型错误:无法使用“in”运算符在中搜索“length”
{“Branchhid”:“71”,“branchareaid”:“4”,“branchname”:“Zaidy”,“branchno”:“11”,“Branchnamerabic”:“u0625\u064a\u0645\u064a\u0632\u064a\u062f\u064a”,“branchaddress”:“沙特阿拉伯麦加24331的哈姆拉和乌姆朱德无名路”,“branchlat”:“21.38958330”,“branchlong”:“39.70306130”,“branchstatus”:“1”,“mobileno”:“0566689175”,“谷歌链接”:”“https:\/\/goo.gl\/maps\/rK3oKf1wfVu”,“工作时间”:“上午6点到凌晨3点”}
at C(jquery.min.js:2)
在Function.each(jquery.min.js:2)
在Object.success(new-find-a-store.php:553)
在u(jquery.min.js:2)
在Object.fireWith[as resolveWith](jquery.min.js:2)
在k(jquery.min.js:2)
在XMLHttpRequest上。(jquery.min.js:2)
$的第一个参数。each()
必须是一个数组,并且您要传递的结果是一个字符串
使用$将JSON字符串转换为数组。每个(JSON.parse(result),…
都可以
解释:在PHP方面,您使用json_encode将数组转换为json sring,因此在使用之前必须在javascript中对其进行解码
PS:此代码可能是错误的:
while($state = mysqli_fetch_assoc($res)){
echo json_encode($state);
}
因为循环时,它将创建如下输出:
{"branchid":"1","branchareaid":"1"}
{"branchid":"2","branchareaid":"2"}
{"branchid":"3","branchareaid":"3"}
{"branchid":"4","branchareaid":"4"}
这不是数组的有效JSON字符串
数组的有效JSON字符串为:
[
{"branchid":"1","branchareaid":"1"},
{"branchid":"2","branchareaid":"2"},
{"branchid":"3","branchareaid":"3"},
{"branchid":"4","branchareaid":"4"}
]
$的第一个参数。each()
必须是一个数组,并且您要传递的结果是一个字符串
使用$将JSON字符串转换为数组。每个(JSON.parse(result),…
都可以
解释:在PHP方面,您使用json_encode将数组转换为json sring,因此在使用之前必须在javascript中对其进行解码
PS:此代码可能是错误的:
while($state = mysqli_fetch_assoc($res)){
echo json_encode($state);
}
因为循环时,它将创建如下输出:
{"branchid":"1","branchareaid":"1"}
{"branchid":"2","branchareaid":"2"}
{"branchid":"3","branchareaid":"3"}
{"branchid":"4","branchareaid":"4"}
这不是数组的有效JSON字符串
数组的有效JSON字符串为:
[
{"branchid":"1","branchareaid":"1"},
{"branchid":"2","branchareaid":"2"},
{"branchid":"3","branchareaid":"3"},
{"branchid":"4","branchareaid":"4"}
]
如我所见,您试图像在列表中一样迭代对象,该代码似乎不起作用
声明一个变量来存储对象的键列表,它是一个字典
迭代抛出此列表,并根据键列表中的该项选择对象的值
var listOfKeys=(Object.keys(result));
for(var i=0;i”+结果[listOfKeys[i]]+””;
}
如果要使用对象的任何特定属性,请执行以下操作:
$('.locations').append("<li>"+result.nameOfTheProperty+"</li>");
$('.locations')。追加(“”+result.nameofProperty+” ”);
如我所见,您试图像在列表中一样对对象进行迭代,但该代码似乎不起作用。一种方法可能是:
声明一个变量来存储对象的键列表,它是一个字典
迭代抛出此列表,并根据键列表中的该项选择对象的值
var listOfKeys=(Object.keys(result));
for(var i=0;i”+结果[listOfKeys[i]]+””;
}
如果要使用对象的任何特定属性,请执行以下操作:
$('.locations').append("<li>"+result.nameOfTheProperty+"</li>");
$('.locations')。追加(“”+result.nameofProperty+” ”);
当我实现这段代码时,$.each(JSON.parse(result)、函数(index、branch){
它显示了错误
VM1962:2未捕获的语法错误:JSON中位置409处的意外标记{
在JSON.parse()处
在Object.success(new-find-a-store.php:559)
在u(jquery.min.js:2)
在Object.fireWith[as resolveWith](jquery.min.js:2)
在k(jquery.min.js:2)
在XMLHttpRequest上。(jquery.min.js:2)
当我实现这段代码时,$.each(JSON.parse(result)、函数(index、branch){
它显示了错误
VM1962:2未捕获的语法错误:JSON中位置409处的意外标记{
在JSON.parse()处
在Object.success(new-find-a-store.php:559)
在u(jquery.min.js:2)
在Object.fireWith[as resolveWith](jquery.min.js:2)
在k(jquery.min.js:2)
在XMLHttpRequest上。(jquery.min.js:2)
$。each()
:
- 解析JSON时,则
函数(键、值)
- 当您解析数组时,则
函数(索引、值)
var result={“Branchhid”:“71”,“branchareaid”:“4”,“branchname”:“Zaidy”,“branchno”:“11”,“Branchnamerabic”:“u0625\u064a\u0645\u064a\u0632\u064a\u062f\u064a”,“Branchadress”:“沙特阿拉伯麦加24331阿勒哈姆拉和乌姆贾德无名路”,“branchlat”:“21.38958330”,“branchlong”:“39.70306130”,“branchstatus”:“1”,“mobileno”:“0566689175”谷歌地图链接:“https:\/\/goo.gl\/maps\/rK3oKf1wfVu”,“工作时间”:“早上6点到凌晨3点”};
$。每个(结果、功能(键、值)