我必须承认我的AJAX技能很糟糕。我有一系列新闻。大约25行。我没有显示所有25行,而是将数组切成5的部分,并允许用户使用array_slice和一些ajax“加载更多”。 php端对我来说很容易,但我在使用ajax时遇到了一些麻烦。我尽我所能把它放在一起,但它还没有完全奏效。
AJAX:
<script type="text/javascript">
$(document).ready(function() {
$('#load-more').click(function () {
var size = 5;
var data = 'size=' + content.val() + '&submit=yes';
$('.loading-circle').show();
//start the ajax
$.ajax({
url: "<?php echo $url; ?>/process/load.php",
type: "GET",
data: data,
cache: false,
success: function (html) {
if (html==1) {
}
else {
alert("Sorry, an unnexpected error has occurred.");
}
}
});
return false;
});
});
</script>
load.php
<?php
session_start();
if ($_GET["submit"] == 'yes')
{
$_SESSION["load_size"] = $_GET["size"];
}
?>
的index.php
$sorted = Feed::sortFeed($feed, $day, 0, $_SESSION["load_size"]);
foreach ($sorted as $article)
require $baseDir . 'feed.php';
所以我试图获取会话变量来确定大小。这种方法有几个问题虽然我不知道如何解决。每页可能有多个新闻源,即使用户只是想扩展一个,也会扩展。最重要的是,在页面刷新时,Feed不会调整为默认值5。我想我必须使用load.php页面生成数组,但我不知道如何通过ajax传回它。那么我最好如何使用ajax对数组进行排序呢?有什么我可以阅读的,或者我可以做一些简单的改变吗?
由于
答案 0 :(得分:0)
您可以使用PHP数组上的json_encode
函数通过ajax传回PHP数组。只需在load.php
<?php
session_start();
if ($_GET["submit"] == 'yes')
{
$_SESSION["load_size"] = $_GET["size"];
}
//load some php array here
$array = array('success' => true, 'items' => array('item1','item2'));
echo json_encode($array);
?>
然后你可以通过指定dataType
选项告诉jQuery返回类型是JSON:
$.ajax({
url: "<?php echo $url; ?>/process/load.php",
type: "GET",
data: data,
cache: false,
dataType: 'json',
success: function (response) {
// response var is an object, same structure as the PHP array you encoded
if(response.success){
// handle success
} else {
alert('something went wrong');
}
}
});