Javascript 使用敲除js不会显示从ajax请求获得的滚动数据

Javascript 使用敲除js不会显示从ajax请求获得的滚动数据,javascript,php,html,knockout.js,Javascript,Php,Html,Knockout.js,我使用了一段代码,这段代码是我从一个网站上获得的,使用knockoutjs进行无限滚动,其中有一些更改 以下是我的html和javascript代码: <div id="main" data-bind="foreach: items, event: { scroll: scrolled }"> <div data-bind="text: name"></div> </div> <script type="text/javascrip

我使用了一段代码,这段代码是我从一个网站上获得的,使用knockoutjs进行无限滚动,其中有一些更改

以下是我的html和javascript代码:

<div id="main" data-bind="foreach: items, event: { scroll: scrolled }">
    <div data-bind="text: name"></div>
</div>

<script type="text/javascript">
       var viewModel = {
            items: ko.observableArray([]),
            scrolled: function(data, event) {
                var elem = event.target;
                if (elem.scrollTop > (elem.scrollHeight - elem.offsetHeight - 200)) {
                    getItems(6);
                }
            },
            maxId: 0,
            pendingRequest: ko.observable(false)
        };


        function getItems(cnt) {
            if (!viewModel.pendingRequest()) {
                var entries = [];
                for (var i = 0; i < cnt; i++) {
                    var id = viewModel.maxId++;
                    entries.push({
                        id: id
                    });
                }

                viewModel.pendingRequest(true);

                $.ajax({
                    type: 'POST',
                    url: 'echojson.php',
                    data: {
                        json: ko.toJSON(entries),
                        delay: .1,
                        id:id,
                        cnt:cnt
                    },
                    success: function(entries) {
                        ko.utils.arrayForEach(entries, function(entry) {
                            alert(entry);
                            viewModel.items.push(entry);
                        });
                        viewModel.pendingRequest(false);
                    },
                    error: function() {
                        viewModel.pendingRequest(false);
                    },
                    dataType: 'json'
                });
            }
        }

        ko.applyBindings(viewModel);

        getItems(6);

    </script>

var viewModel={
项目:ko.observableArray([]),
滚动:功能(数据、事件){
var elem=event.target;
如果(elem.scrollTop>(elem.scrollHeight-elem.offsetHeight-200)){
项目(6);
}
},
maxId:0,
待处理请求:可观察到(错误)
};
函数getItems(cnt){
如果(!viewModel.pendingRequest()){
var分录=[];
对于(变量i=0;i
下面是我获取数据的php文件代码:

<?php
   include 'dbconfig.php';
   $jsonarr=json_decode($_POST['json'],true);
   $cnt=$_POST['cnt'];
   if(isset($_POST['id'])){
       $offset=$_POST['id'];
   }
   if($offset<=$cnt){
       $offset=0;
   }
   else{
       $offset=$offset-($cnt-1);
   }
   $json=array();
   $sql="SELECT * FROM user LIMIT $offset,".$cnt;
   $exec=mysqli_query($con,$sql);
   while($row=mysqli_fetch_array($exec)){
      $name=strtoupper($row['fname'].' '.$row['lname']);
      $profilepic=$row['profilepic'];
      $city=$row['city'];
      $json[]=$name.' '.$profilepic.' '.$city;
  }
  echo json_encode($json);
  ?>

在scroll上,我获得了正确的添加的div数,但是id为
main
的div中没有显示
items
数组中的数据

当我提醒数组项中的元素时,我会得到其中的值。但是这个更新的数组似乎没有绑定到div


请帮助我解决此问题。

您的服务器端逻辑不正确。您返回的是字符串数组,而不是对象数组。因此,当您在客户端获取数据时,您的项目没有
名称
属性

因此,您需要在
$json
数组中添加具有正确属性名称的对象,有多种方法可以做到这一点(),下面是一个示例:

$json[]= (object)array('name' => $name, 'profilepic' => $profilepic, 'city' => $city);

您的服务器端逻辑似乎不正确。您返回的是字符串数组,而不是对象数组。您需要这样做:
$json[]=(对象)数组('name'=>$name,'profilepic'=>$profilepic,'city'=>$city)