我正在构建一个简单的预算应用程序,我正在尝试根据下拉菜单过滤结果表,其中包含一年中的月份。当页面加载时,它会触发一个php函数,该函数获取当前月份的所有预算类别,并且工作正常。我想要做的是能够从下拉菜单中选择不同的月份,然后仅使用该月份的项目更新表格。
如何仅使用所选月份的数据更新表格?
这是我的AJAX调用,它将成功提醒过滤结果数组,但这就是我所知道的。我不知道如何接受AJAX响应并将其提供给表格。
function filterCategory() {
var cur_month = $('#month option:selected').attr("value");
$.ajax({
type: "POST",
url: 'inc/functions.php',
data: {action: "filter_categories", cur_month:cur_month},
success: function(response){
alert(response);
}
});
};
这是我的PHP函数,一个用于获取收入和费用类别的初始列表:
function get_income_cat() {
require(ROOT_PATH . "inc/database.php");
$cur_month = date('m');
try {
$results = $db->query("SELECT * FROM categories WHERE is_income = '1' AND month ='" . $cur_month . "' ORDER BY cat_name ASC;");
} catch (Exception $e) {
echo ("ERROR: Data could not be retrieved from the database." . $e);
exit;
}
$income = $results->fetchall(PDO::FETCH_ASSOC);
return $income;
};
function get_expense_cat() {
require(ROOT_PATH . "inc/database.php");
$cur_month = date('m');
try {
$results = $db->query("SELECT * FROM categories WHERE is_income = '0' AND
month ='" . $cur_month . "' ORDER BY cat_name ASC;");
} catch (Exception $e) {
echo ("ERROR: Data could not be retrieved from the database." . $e);
exit;
}
$expense = $results->fetchall(PDO::FETCH_ASSOC);
return $expense;
};
这是我的主要php / html代码:
<?php foreach($income as $key=>$value) { ?>
<tr>
<td id="<?php echo $value['cat_id_PK']; ?>"><?php echo $value['cat_name']; ?></td>
<td id="<?php echo $value['cat_id_PK']; ?>">$<?php echo $value['cat_amount']; ?></td>
</tr>
<?php }; ?>
<?php foreach($expense as $key=>$value) { ?>
<tr>
<td id="<?php echo $value['cat_id_PK']; ?>"><?php echo $value['cat_name']; ?></td>
<td id="<?php echo $value['cat_id_PK']; ?>">$<?php echo $value['cat_amount']; ?></td>
</tr>
<?php }; ?>
答案 0 :(得分:0)
您是否收到了提醒您的回复?我没有看到在提供的代码中调用函数filterCategory()
。我假设您正在使用onchange事件来启动AJAX调用。
在成功功能中,您必须接受响应而不是提醒它,您必须将其放在文档中,如下所示:
$('#the_target').html(response);
答案 1 :(得分:0)
我建议使用像JSON这样的东西来编码AJAX请求的PHP数据(参见php:json_encode。然后它就变成了一个相当简单的操作。你可以在{{3}看到这个概念的基础。虽然我甚至不打算假装我在那里使用任何最佳实践 - 但这只是一个非常粗略的草图。
$('#load').click(function() {
$.get('http://examples.joeysmith.com/gistfile3.txt',
function(data) {
var table = $('#table tr:last');
table.html('');
console.log(table);
var json = JSON.parse(data);
for(var recType in json) {
for(var rec in json[recType]) {
td = json[recType][rec];
table.after('<tr>'
+'<td id="'+td.cat_id_PK+'">'+td.cat_name+'</td>'
+'<td>'+td.cat_amount+'</td>'
+'</tr>');
}
}
}
)
});