【发布时间】:2013-07-26 21:58:46
【问题描述】:
我有一个文件列表和一个下拉框,我希望用户能够按各种类别等过滤它们。
我有一个 php 类,它具有创建 sql 查询并返回结果的功能。我非常想通过 ajax 来防止刷新。
我被困住了,希望能得到一些帮助。
问题是我不知道下一步该做什么。这对我来说很新,但仍然很陌生。如果可以从 select 中运行 ajax 调用 onKeyUp 那就更好了。
感谢您的帮助:
HTML:
<div>
<form action="" method="post" name="orderBy">
<label for="orderBy" id="orderBy">Order By:</label>
<select>
<option class="orderByOption" value="newest">Newest First</option>
<option class="orderByOption" value="oldest">Oldest First</option>
<option class="orderByOption" value="cat">Category</option>
<option class="orderByOption" value="alpha">Aphabetical</option>
<option class="orderByOption" value="fileType">Filetype</option>
</select>
<label> </label>
<input type="submit" class="orderByTrainingButton" name="submit" value="Go!"/>
</form>
</div>
阿贾克斯:
//form for changing the ordering of items in training all docs
$(function(){
$(".orderByTrainingButton").click(function(){
//validate and process
//get vlaue
var option = $(".orderByOption").val();
var params = {option: option};
$.ajax({
type: "POST",
url: "../trainingOrderByAjax.php",
data: params,
dataType: 'json',
success: function(data){
if(data.success == true){
//aaaannnd. stuck/
}else{
// shouldn't ge there...I hope.
}
},
error: function( error ) {
console.log(error);
}
});
});
});
ajax 将调用的 php:
<?php
include_once('core/init.php');
if($_POST){
$orderBy = $_POST['orderByOption'];
if($training->getAlFilesOrderBy($orderBy)){
$data['success'] = true;
}else{
$data['success'] = false;
}
echo json_encode($data);
}
首先按 desc 或 asc 排序会很棒。然后,我可以在此基础上进行构建。
【问题讨论】:
-
您只传递了
option关键数据。您始终可以使用$("#myForm").serialize()作为您的data参数。 -
@HalfCrazed - 我应该传递哪些其他数据?这就是我需要的函数参数。序列化的好处是什么?如何适应?
-
考虑到你正在使用这个:
$orderBy = $_POST['orderByOption'];但你没有发布orderByOption... -
@HalfCrazed - 好地方 :)