Javascript 使用敲除js不会显示从ajax请求获得的滚动数据
我使用了一段代码,这段代码是我从一个网站上获得的,使用knockoutjs进行无限滚动,其中有一些更改 以下是我的html和javascript代码: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
<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)非常感谢你。。。这很有帮助!!请把它作为一个答案,以便我接受它……:)