首页 > 解决方案 > 通过 AJAX 将多个 JSON 对象从 PHP 返回到 jQuery

问题描述

这个问题已经被问过了,但它没有解决我的具体问题。我想要实现的是,每当用户输入密码时,我通过 AJAX 将密码发送到 PHP 并使用该密码返回结果。如果将单个区域映射到特定的密码,那么我的代码就可以工作。但是,如果有多个区域具有相同的密码,那么我的密码就会中断。我尝试了多种方法。我什至试过这个:链接

这是我的代码

$('.input-pc').on('keyup change', function(){
    PincodeId = $(this).attr('id');
    PincodeVal = $("#" + PincodeId).val();
    checkPincodeLength = PincodeVal.length;
    if(checkPincodeLength == 6){
        $('#' + PincodeId).next().next('.invalid-feedback').html('');
        $.ajax({
            url: "../../auth/regrequest.php",
            type: "POST",
            data: 'current_pincode='+PincodeVal,
            dataType: 'JSON',
            cache: false,
            success: function(data){
                console.log('pc: '+data);
                $.each(data, function(index, val) {
                   console.log(val);
               })
                                   
            }
        });
    }else{
        $('#' + PincodeId).next().next('.invalid-feedback').html('<span><i class="fa fa-exclamation-circle" aria-hidden="true"></i>&nbsp;Pincode must be of 6 digits</span>');
    }
});

我什至尝试删除 dataType 并使用 JSON.parse 解析数据。这也没有奏效。

我的 PHP 代码看起来像这样

if(isset($_POST['current_pincode']) && !empty($_POST['current_pincode'])){
    $current_pincode = $_POST['current_pincode'];
        $query26 = $dbc->prepare("SELECT a.area_id, a.city_id, a.state_id, b.state_name, c.city_name, d.area_name FROM pincodes a, states b, cities c, areas d WHERE a.pincode_code = ? AND a.state_id = b.state_id AND a.city_id = c.city_id AND a.area_id = d.area_id GROUP BY area_id ORDER BY area_id");
        $query26->bindParam(1, $current_pincode);
        $query26->execute();
        $citystate = '';
        $city_id = '';
        //$citystatearray = array(
           // 'CityState' => array(),
        //);
        //$i = 0;
        //while ($getcitystate = $query26->fetch(PDO::FETCH_ASSOC)){
         //   $citystatearray['CityState'][$i++] = $getcitystate;
         //   echo json_encode($citystatearray); 
       // }
        foreach($query26 AS $getcitystate){
            
            // $state_id = $getcitystate['state_id'];
            // $state_name = $getcitystate['state_name'];
            // $city_id = $getcitystate['city_id'];
            // $city_name = $getcitystate['city_name'];
            // $area_name = $getcitystate['area_name'];
            // $rowCount = $query26->rowCount();
            
            // //$citystate .= $area_name.',';
            // //$pct = $getcitystate['pincodetime'];if(count($area_name) == 1){echo 'only one';}else{echo 'more than 1';}
             if($rowCount == 1){
            //     $citystate = 
            //                 array(
            //                     'current_pincode' => $current_pincode,
            //                     'state_id' => $state_id,
            //                     'state_name' => $state_name,
            //                     'city_id' => $city_id,
            //                     'city_name' => $city_name,
            //                     'area_name' => $area_name,
            //                     'rowcount' => $rowCount
            //                  );
             }else{
                
                $citystate .= 
                            array(
                                
                                                'current_pincode' => $current_pincode,
                                                'state_id' => $state_id,
                                                'state_name' => $state_name,
                                                'city_id' => $city_id,
                                                'city_name' => $city_name,
                                                'area_name' => array('area_name_inner' => $area_name),
                                                'area_name' => $area_name,
                                                'rowcount' => $rowCount
                                                
                        );
             }
            //echo $citystate;
            
           
        }echo json_encode(
            array(
                'citystate' => $citystate
            )); //echo json_encode(
        //     array(
        //         'citystate' => $citystate
        //     ));//echo $citystate;
        //echo $city_id;
       // echo $citystate1 = $city_id.','.$rowCount.','.$citystate;
}

我没有删除评论以显示我尝试输出数据但徒劳的不同方式。任何帮助将不胜感激。谢谢!

标签: phpjqueryajax

解决方案


推荐阅读