php - 如何使用带有 Php Ajax 的 Jquery Tabledit 插件使用数据库填充下拉列表
问题描述
我找到了一个带有下拉列表的内联可编辑表的插件,但是我想用数据库中的值填充下拉列表。我的代码只有一个带有 2 个值的“性别”的下拉列表。我找到了以下我正在尝试调整的代码,但不幸的是并不幸运。我试图创建一个查询并使用一个 php 变量但没有工作。这是我第一次使用 Jquery 插件,我惊讶地发现要找到带有下拉列表的表并不容易,而且可用的表通常具有固定值。这很可惜,因为它们非常有用。我厌倦了试图解决这个问题,任何帮助我都会非常感激!
表格: 带有下拉菜单的内联可编辑表格
代码如下:
<script type="text/javascript" language="javascript" >
$(document).ready(function(){
var dataTable = $('#sample_data').DataTable({
"processing" : true,
"serverSide" : true,
"order" : [],
"ajax" : {
url:"fetch.php",
type:"POST"
}
});
$('#sample_data').on('draw.dt', function(){
$('#sample_data').Tabledit({
url:'action.php',
dataType:'json',
columns:{
identifier : [0, 'id'],
editable:[[1, 'first_name'], [2, 'last_name'], [3, 'gender', '{"1":"Male","2":"Female"}']]
},
restoreButton:false,
onSuccess:function(data, textStatus, jqXHR)
{
if(data.action == 'delete')
{
$('#' + data.id).remove();
$('#sample_data').DataTable().ajax.reload();
}
}
});
});
});
</script>
解决方案
我在我的情况下使用了一个 PHP 变量,该变量具有我在脚本中已经可用的下拉列表所需的值。
var shoes = <?php echo json_encode($data['shoes']);?>;
console.log(shoes);
0: {shoe_id: "3", brand_name: "Keen Koven WP"}
1: {shoe_id: "9", brand_name: "Keen Targhee Vent"}
2: {shoe_id: "5", brand_name: "Merrel MOAB Edge 2"}
3: {shoe_id: "1", brand_name: "New Balance 510v2"}
4: {shoe_id: "2", brand_name: "New Balance Trail Runners-All Terrain"}
5: {shoe_id: "6", brand_name: "Oboz Cirque Low"}
6: {shoe_id: "7", brand_name: "Oboz Sawtooth II Low"}
7: {shoe_id: "4", brand_name: "Oboz Sawtooth Low"}
8: {shoe_id: "8", brand_name: "Skechers Crossbar"}
然后我遍历shoes
变量并建立了下拉值所需的字符串:
var shoes_result = '';
$.each(shoes, function(key, element) {
shoes_result += '"'+element.shoe_id+'": "'+element.brand_name+'",';
});
shoes_result = shoes_result.substring(0,shoes_result.length-1); //strip trailing last comma.
console.log(shoes_result);
"3": "Keen Koven WP","9": "Keen Targhee Vent","5": "Merrel MOAB Edge 2","1": "New Balance 510v2","2": "New Balance Trail Runners-All Terrain","6": "Oboz Cirque Low","7": "Oboz Sawtooth II Low","4": "Oboz Sawtooth Low","8": "Skechers Crossbar"
注意:确保从字符串中去掉尾随逗号
然后将shoes_result
字符串变量与'{}'
我需要的连接起来:
$('#walks-table').Tabledit({
url: '<?php echo URLROOT; ?>/walks/update',
columns: {
identifier: [0, 'day_walked'],
editable: [[1, 'cal_burned'], [2, 'miles_walked'], [3, 'duration'], [4, 'mph'], [5, 'shoes_worn', 'select', '{'+shoes_result+'}']]
},
editButton: <?php echo isset($_SESSION['user_id']) ? 'true' : 'false';?>,
deleteButton: false,
confirmButton: true,
});
'select
注意:在我为此列包含 ' 类型之前,我无法让它工作
注意点:我只在浏览器端工作,并没有在我的情况下执行任何服务器端(PHP),所以我不知道我可能会遇到什么样的粗糙边缘。此外,我充其量只是 jQuery 的新手,所以这个解决方案可能不是实现和/或优化的最佳选择。
希望这会有所帮助,祝你好运!
推荐阅读
- sql - 如何使用 SQL 将二进制表列打印为零和一
- mysql - 由于3306忙,mysql无法启动
- python - 500:内部服务器错误 Spotify python Auth 代码流试图重定向到登录并获取令牌
- mysql - 按成员分组,但按产品数量排序
- python - 把圆形变成方形。已解决:松鼠包
- php - PHP 致命错误:未捕获的 TypeError:传递给 Test::__construct() 的参数 1 必须是可调用的、给定的字符串、已调用
- composer-php - 主题文件夹未公开 - Expose 要求公开安装期间未创建的文件夹
- node.js - 属性“productsSub”没有初始值设定项,并且未在构造函数中明确分配。ts(2564)
- android - Java.Net.ProtocolException:当我尝试将 laravel api 与 xamarin 一起使用时,流意外结束
- selenium - 我的 selenium 脚本在 eclipse 中运行良好,但在 jenkins 中运行良好