[英]How to loop sort data coming from ajax calls after data has already been fetched through ALL pages?
[英]How to sort data already fetched from database with jquery/ajax?
以下是我使用过滤器获取数据的查询:
$statement = $pdo->prepare("SELECT * FROM posts WHERE subid IN (:key2) AND Poscode=:postcode2 AND pricing=:rate2");
$statement->execute(array(':key2' => $key2,':postcode2'=>$postcode,':rate2'=>$rate));
// $row = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = array();
while( $row = $statement->fetch()) {
array_push($json, array("name" => $row['Name'], "id" => $row['PostUUID'],"rate" => $row['pricing'],"reputation" => $row['Reputation'],"plus" => $row['ReviewPlus'],"neg" => $row['ReviewNeg'],"weekM" => $row['week_morning'],"weekA" => $row['week_afternoon'],"weekE" => $row['week_evening'],"endM" => $row['weekend_morning'],"endA" => $row['weekend_afternoon'],"endE" => $row['weekend_evening']));
}
header('Content-Type: application/json');
echo json_encode($json);
这是我的ajax
$("form").on("submit", function () {
var data = {
"action": "test"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "ajax2.php", //Relative or absolute path to response.php file
data: data,
success: function (data) {
$("#main_content").slideUp("normal",function(){
//$(".the-return").html("<br />JSON: " + data+"<br/>");
for (i = 0; i < data.length; i++) {
$(".the-return").append("<div class='inside_return'>Name:" + data[i].name + "<br/>Id:" + data[i].id + "Pricing:" + data[i].rate + "<br/>Reputation:" + data[i].reputation+"<br/>Review Plus:" + data[i].plus+"<br/>Review Negative:" + data[i].neg+"<br/><h1>Availability</h1>Week Morning:" + data[i].weekM+"<br/>Week Afternoon:" + data[i].weekA+"<br/>Week Evening:" + data[i].weekE+"<br/>Weekend Morning:" + data[i].endM+"<br/>Weekend Afternoon:" + data[i].endA+"<br/>Week Evening:" + data[i].endE+"</div>");
//alert(data[i].name)
}
});
}
});
return false;
});
现在我已经在具有指定过滤器的页面中显示数据,这意味着他的结果必须与从用户输入收集的subid,poscode和rate相符。
我正在让用户通过评论,排名等对已经获取的数据进行排序......它必须是快速的(ajax)。 但我该怎么做呢? 任何人都可以提出一个想法。
结果不在表行形式中,但它们显示在每个记录的div块中。
我如何使用jquery来实现这一点,比如用户点击“按排序排序”。
我有一些想法:我不是向每个用户排序的数据库发出一个新的查询,而是如何循环通过上面的json接收的数据数组并从那里排序?
$('#rank').on("click", function(){ //how to sort here});
编辑部分:
引用此链接: 对JavaScript对象数组进行排序
我正在尝试这样的事情:
var sort_by = function(field, reverse, primer){
var key = primer ?
function(x) {return primer(x[field])} :
function(x) {return x[field]};
reverse = !reverse ? 1 : -1;
return function (a, b) {
return a = key(a), b = key(b), reverse * ((a > b) - (b > a));
}
}
// Sort by price high to low
data.sort(sort_by('rate', true, parseInt));
// Sort by city, case-insensitive, A-Z
data.sort(sort_by('Name', false, function(a){return a.toUpperCase()}));
但它不起作用,任何人都可以帮助??
此解决方案尝试使用内置排序。
// I assume in the code that there are 2 properties "name" and "rating".
// a and b are of the same type as the data
function ratingComparer(a, b)
{
if(parseInt(a.rating) < parseInt(b.rating))
return -1;
if(parseInt(a.rating) > parseInt(b.rating))
return 1;
return 0;
}
function nameComparer(a,b)
{
// Same thing as with rating except we do string comparisons with a.name
// and b.name
}
//Sort by rating
data.sort(ratingComparer);
// Sort by name
data.sort(nameComparer);
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort链接。 我想,实例部分正上方的部分与您的情况特别相关。
编辑:我认为你的实现的问题是比较函数需要对类型的2个参数进行排序。 您可能不得不使用开关或其他东西来选择正确的比较功能,而不是像您尝试使用的那样具有动态效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.