当我使用dataType json时,我的ajax脚本中缺少elment]

时间:2017-02-20 04:51:14

标签: javascript jquery json ajax codeigniter

尝试使用数据类型json以json格式获取值,但是当我将其添加到我的脚本中时,它显示错误,elemet]缺少我做错了什么?

    $(document).ready(function(){
    $(window).scroll(function(){

        var lastID = $('.load-more').attr('lastID');

        if ($(window).scrollTop() == $(document).height() - $(window).height() && lastID != 0){
            $.ajax({
                type:'POST',

                url:'<?php echo base_url("user/get_all_post"); ?>',
                data:"id="+lastID,
                dataType:'json',

                beforeSend:function(html){
                    $('.load-more').show();
                },
                success:function(html){

                 //alert(html);
                 var ParsedObject = JSON.stringify(html);            
              var json = $.parseJSON(ParsedObject);
              //alert(json);
            /*
              var json =" [{'id':1,'name':'Test1'},{'id':2,'name':'Test2'}]";
              var jsonArray = eval('(' + json + ')');
            for (i in jsonArray)
            {
             alert(jsonArray[i]["name"]);
            }
            */
             // alert(json.id);
              var jsonArray = eval('(' + json + ')');

             $PostId=jsonArray[4]["id"];
           // alert($PostId);

            for(i in jsonArray)
            {
            $post_status=jsonArray[i]["status"];
            $status_image=jsonArray[i]["status_image"];
            $multimage=jsonArray[i]["multimage"];

              //alert(Lastid);

              //alert($post_status);
              //alert($status_image);
              //alert($multimage);

                  $('.load-more').attr('lastID',$PostId);
                  $('#result_table').append(jsonArray);

                     }
                 } 
            });
        }
    });
});
</script>

我想访问我的json数据,以便我可以显示它,但是当我在我的视图中访问时,所有变量都显示为undefined

2 个答案:

答案 0 :(得分:0)

首先,您的user/get_all_post需要返回json数据(并且还有application/json的响应头

使用output课程 (参考https://codeigniter.com/user_guide/libraries/output.html

$this->output
        ->set_content_type('application/json')
        ->set_output(json_encode(array('foo' => 'bar')));

然后你可以在jquery中使用json属性来响应

success:function(response){
  alert(response.foo)
}

答案 1 :(得分:0)

我想我找到了一个解决方案,我只是在我的代码中添加所有内容,我只需要访问我的json值,我只需要解析json值然后我就可以在for循环中访问数组了 希望它也有助于其他人

    <script type="text/javascript">
$(document).ready(function(){
    $(window).scroll(function(){

        var lastID = $('.load-more').attr('lastID');

        if ($(window).scrollTop() == $(document).height() - $(window).height() && lastID != 0){
            jQuery.ajax({
                type:'POST',

                url:'<?php echo base_url("user/get_all_post"); ?>',
                 data: "id=" + lastID,
                    dataType: 'json', 


                beforeSend:function(html){
                    $('.load-more').show();
                },
                success:function(data){
                       var ParsedObject = JSON.stringify(data);            
                       var json = $.parseJSON(ParsedObject);

                        $PostId=json[4]['id'];


                        for(i as json)
                      {

                            var post_status = json[i]['status'];
                            $status_image = json[i]['status_image'];
                            var multimage = json[i]['multimage'];

                                       alert($status_image);               
                             $("#status_data").append('<div style=" margin: 20px 50px 0px 40px; ">'+'<a>'+'<?php echo img($user_image); ?>'  +'</a>'+'<a>'+ ' <?php echo $uname; ?>' +'</a>'+'<div>'+post_status+'</div>' +'</div>');

                             $("#status_data").append('<div style=" margin: 20px 50px 0px 40px; ">'+'<a>'+'<?php echo img($user_image); ?>'  +'</a>'+'<a>'+ ' <?php echo $uname; ?>' +'</a>'+'<div>'+'<img src="'+<?php base_url('uploads/'); ?> status_image+'">'+'</div>' +'</div>');
                      }
           $('.load-more').attr('lastID', $PostId);
                    }
            });
        }
    });
});
</script>

这样就可以了,不需要eval或jsonArray。感谢大家的回复。