Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析JSON_编码的数据库结果_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript 解析JSON_编码的数据库结果

Javascript 解析JSON_编码的数据库结果,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,这是我在控制器中的代码。我想把这个结果放到ajax的成功部分。我的问题是,在使用JSON.parse()函数之后,如何在ajax中显示结果,有人能帮我处理循环吗;json代码类似于这样的[{'id:1'},{info:name}] function ajax(){ $rpp= $_POST['rpp']; $last = $_POST['last']; $pn = $_POST['pn']; if($

这是我在控制器中的代码。我想把这个结果放到ajax的成功部分。我的问题是,在使用JSON.parse()函数之后,如何在ajax中显示结果,有人能帮我处理循环吗;json代码类似于这样的
[{'id:1'},{info:name}]

function ajax(){

            $rpp= $_POST['rpp'];
            $last = $_POST['last'];
            $pn =  $_POST['pn'];


        if($pn<1){
            $pn=1;
        }
        elseif($pn>$last){
            $pn =$last;
        }

        $l = ($pn - 1) * $rpp;
        $this->db->limit($l, $rpp);
        $query = $this->db->get('pages');

        $data = array();

if ($query->num_rows() > 0) {
foreach($query->result() as $row) {
    $data[] = $row;
    }
}
$json = json_encode($data);

echo $json;
    }
函数ajax(){
$rpp=$_POST['rpp'];
$last=$_POST['last'];
$pn=$_POST['pn'];
如果($pn$上次){
$pn=$last;
}
$l=($pn-1)*$rpp;
$this->db->limit($l,$rpp);
$query=$this->db->get('pages');
$data=array();
如果($query->num\u rows()>0){
foreach($query->result()作为$row){
$data[]=$row;
}
}
$json=json_encode($data);
echo$json;
}
ajax部分

function request_page(pn)
{ 
    var rpp = <?php echo $rpp; ?>; // results per page
    var last = <?php echo $last; ?>; // last page number

    var results_box = document.getElementById("results_box");
    var pagination_controls = document.getElementById("pagination_controls");
    results_box.innerHTML = "loading results ...";
    $.ajax({
                type: "POST",
                url: "<?php echo site_url('search/ajax')?>",
                data: { 'rpp' : rpp , 'last' : last, 'pn' : pn},
                dataType: "text",
                success: function(msg){
                    alert(msg);
             // $.each($.parseJSON(msg), function() {
       // $('#results_box').html(this.id + " " + this.info);
   // });
                }


            });
功能请求页面(pn)
{ 
var rpp=;//每页的结果
var last=;//最后页码
var results\u box=document.getElementById(“results\u box”);
var pagination_controls=document.getElementById(“pagination_controls”);
结果_box.innerHTML=“加载结果…”;
$.ajax({
类型:“POST”,
url:“”,
数据:{'rpp':rpp'last':last'pn':pn},
数据类型:“文本”,
成功:功能(msg){
警报(msg);
//$.each($.parseJSON(msg),function(){
//$('#results_box').html(this.id+“”+this.info);
// });
}
});
只需更改

   dataType: "text",

jQuery正在进行解析

[编辑]

假设您有:
[{'id':1,'info':'name'},{'id':2,'info':'nom'}]
(您文章中的json稍微不可用,不是数组json编码的结果)

   success: function(msg){
                var id = msg[0].id;
                var info = msg[0].info;
                ...

这段代码中没有错误处理和异常处理,我认为这是必要的!

首先从$.ajax()中删除该数据类型,然后在php中添加正确的内容类型头,如:

header('Content-type: application/json');
这样,jQuery将正确解析json

现在,您可以执行以下操作:

success: function(res){
    $.each(res, function(el) {
        console.log(el.id);
        console.log(el.info);
    });
}

啊,我错过了那一个!好吧,tnx还有一个问题,为什么我会得到未捕获的TypeError:无法读取未定义的属性'id'。这是一个示例。它取决于您的json字符串,即php数组的内容。请显示准确的php数组。我正在进行分页,所以有些事情弄乱了。基本思想是使用以下代码[{'id':1,'info':'name},{'id':2,'info':'nom'}]每页两个结果
success: function(res){
    $.each(res, function(el) {
        console.log(el.id);
        console.log(el.info);
    });
}