【发布时间】:2014-09-30 04:23:43
【问题描述】:
我想对由此获得的结果进行分页:
function processResponse(response){
var myObj = JSON.parse(response);
var weighInData = myObj["WEIGH-INS"];
var weights = []; // re: weigh-in count and calculating highest/lowest
var userDisplayEl1 = document.getElementById("user-display-weigh-in-data");
var weighInCountEl = document.getElementById("weigh-in-count");
var weightLowEl = document.getElementById("weight-low");
var weightHighEl = document.getElementById("weight-high");
var weightgoalEl = document.getElementById("weight-goal");
var dataRows = document.getElementById("data-rows");
userDisplayEl1.innerHTML = "";
weighInCountEl.innerHTML = "";
weightLowEl.innerHTML = "";
weightHighEl.innerHTML = "";
weightgoalEl.innerHTML = "";
dataRows.innerHTML = "";
for (var obj in weighInData) {
if (weighInData[obj].user === selUser) {
weights.push(weighInData[obj].weight);
var row = "<tr>" +
"<td class=\"date\">" + weighInData[obj].date + " </td>" +
"<td class=\"value\">" + weighInData[obj].weight + "</td>" +
"</tr>";
dataRows.innerHTML += row;
// pagination here?
} // if ... === selUser
} // for var obj in weighInData
var weighInCount = weights.length;
var weightLowest = Math.min.apply(null, weights);
var weightHighest = Math.max.apply(null, weights);
userDisplayEl1.innerHTML = weighInData[obj].user + "'s weigh-ins:";
weightLowEl.innerHTML += weightLowest;
weightHighEl.innerHTML += weightHighest;
weighInCountEl.innerHTML = weighInCount;
} // processResponse
看来,因为我正在对结果执行数学运算(在 for 循环之后),所以我不能在我的数据库查询中使用限制,否则数学运算将不准确(仅对数据块执行,而不是对全部数据)。所以看来我必须在客户端上分页,但考虑到我目前如何加载/显示数据,我不知道如何继续。我已经简要地查看了几个分页插件,但是由于我不清楚如何根据我现有的代码来实现它们,我更喜欢在没有插件(或 jQuery)的情况下实现这一点的学习曲线。
任何建议/推动正确的方向,假设我不会实质性地改变我现在所拥有的(我理解的有效的,将不胜感激。
顺便说一句,我的服务器端代码,fwiw:
$table = "`WEIGH_IN_DATA`";
if ($mysqli) {
$user = $_GET['selUser'];
$i = 0;
$jsonData = '{"WEIGH-INS": [';
$stmt = $mysqli->stmt_init();
$query = "SELECT * FROM $table WHERE USER = '$user'";
$result = $mysqli->query($query) or die("Error in the query (?)" . mysqli_error($mysqli));
while($row = mysqli_fetch_array($result)) {
$i++;
$user = $row["USER"];
$date = $row["DATE"];
$weight = $row["WEIGHT"];
$jsonData .= '{"user": "'.$user.'", "date": "'.$date.'", "weight": "'.$weight.'" },';
}
$jsonData = chop($jsonData, ","); // kill the trailing comma
$jsonData .=']}';
echo $jsonData;
}
谢谢,
svs
【问题讨论】:
-
嘿,我想我上次在最小/最大权重方面帮助了你。如果您想在没有插件的情况下执行此操作,根据您的功能(单击页码、上一个/下一个按钮等)可能需要相当多的时间来编写代码。使用 jQuery 会更容易,你可能想从这里开始 stackoverflow.com/questions/2974246/…
-
@Will 好的,谢谢 Will。我一直在尝试转换我的循环结果和数组,但并没有走得太远。我会看看我是否可以在我的工作代码中使用插件。干杯!
-
你可以在你的网站上使用 jquery,还是只能使用 vanilla JS?我在下面添加了一个 jquery 答案,但是,如果它只是 JS,我将不得不为您找到更好的答案
-
@Will 我使用这个应用程序的目的是提高我的香草 js 排骨,所以我试图尽可能多地写出 jQ。如果事实证明原始 js 中的分页对我来说执行起来要困难得多(没有太多改变我到达我所在位置的方式),那么我不会排除插件。再说一次,如果我现有的代码不是插件就绪的,我希望我在实现插件方面也会受到挑战。我会继续查看您建议的资源 - 以及下面的答案,再次感谢您。
标签: javascript json pagination