Javascript 想要打印json对象的循环,但可以';t从json对象访问值

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

当我在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)
$(文档).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点”};
    $。每个(结果、功能(键、值)