使用 Jquery 收集数组中的行 ID,然后为新表查询这些值
Posted
技术标签:
【中文标题】使用 Jquery 收集数组中的行 ID,然后为新表查询这些值【英文标题】:Collecting Row IDs in an Array using Jquery and then Querying those values for a new table 【发布时间】:2015-06-05 16:10:25 【问题描述】:我正在尝试使用 jquery/php 设置一个函数,其中用户在具有特定 ID 的行中选择一个复选框(该 ID 与我的数据库中行数据的主键匹配),将每个行 ID 存储到一个数组,然后单击“比较选定的行”按钮将其传递到一个新页面,其中仅显示那些选定行的结果表。
每个输入看起来像这样
<input type='checkbox' id='$id' class='compareRow'></input>
我是 jquery 的新手,并计划使用我之前编写的脚本的变体来以模式显示动态行数据。我不确定这段代码是否相关,但它还将行 ID 传递给另一个 php 页面以查询数据库。请注意,这在过去仅用于单个查询,这个新函数需要在查询级别使用某种 foreach 语句才能处理 ID 数组,我确定。
这是我一直在尝试调整的脚本
$(function()
$('.compareRow').click(function()
var ele_id = $(this).attr('id');
$.ajax(
type : 'post',
url : 'query.php', //query
data : 'post_id='+ ele_id, // passing id via ajax
success : function(r)
other code?
);
);
);
);
我知道这里还有更多需要,但这只是我目前所拥有的,任何帮助将不胜感激。
更新,所以我创建了页面并具有以下内容:
在我的 compareSelected.php 中,我有以下代码:
if(isset($_POST['post_id']))
$compare_received = $_POST['post_id'];
print_r($compare_receive);
它返回未定义的索引。
我还修改了代码以更改为该页面,如下所示:
$('.compareRowButton').click(function()
var ids = [];
//loop to all checked checkboxes
$('.compareRow:checked').each(function()
//store all id to ids
ids.push($(this).attr('id'));
);
$.ajax(
type : 'post',
url : 'compareSelected.php', //query
data : post_id:ids, // passing id via ajax
success : function(r)
window.location = 'compareSelected.php';
);
);
不知道为什么它不会拾取数组值。
【问题讨论】:
【参考方案1】:如果您已设置好当前的实现,则可以在 rows 数组中维护对每个 ajax 调用返回的数据的引用。稍后,您可以实现一个按钮,该按钮触发一个函数以将行数据附加到您的表中。当然,您可能需要在追加之前解析请求返回的数据。
$(function()
var rows = [];
$('.compareRow').click(function()
var ele_id = $(this).attr('id');
$.ajax(
type : 'post',
url : 'query.php', //query
data : 'post_id='+ ele_id, // passing id via ajax
success : function(data)
rows.push(data);
);
);
$('.displayTable').click(function()
// append to table or divs
);
);
我建议您避免在此处重新加载页面。或者,如果必须,请在下一页上发出 Ajax 请求。您希望避免在不同的 jQuery 模块之间紧密耦合您的逻辑。应该使用 Ajax 来异步加载数据,而不需要重新加载页面。
【讨论】:
我决定听取您的建议并使用此脚本,但想知道我需要做什么才能将数据解析回可显示的格式?【参考方案2】:在您的代码上。每次单击复选框时发送 ajax 请求。 最好在发送 ajax 请求之前制作另一个按钮或其他东西。
$('SOME_ELEMENT').click(function()
var ids = [];
//loop to all checked checkboxes
$('.compareRow:checked').each(function()
//store all id to ids
ids.push($(this).attr('id'));
);
$.ajax(
type : 'post',
url : 'query.php', //query
data : post_id:ids, // passing id via ajax
success : function(r)
other code?
);
);
);
【讨论】:
太棒了,很有意义,让我很高兴知道通过重用这个特定的脚本我有点走上正轨。关于下一页的 PHP 端(生成新表的位置)有什么想法可以让 PHP 识别“ids”数组并在一个查询中循环遍历每个值吗?还是我只是创建一个循环并让它重新查询数组中的每个值? 在您的query.php
上,您可以使用$_POST['post_id']
访问那些ids
那么query.php
里面有什么?
抱歉,按回车键太早了。代码在上面
我明白了。为什么不正常提交表单?以上是关于使用 Jquery 收集数组中的行 ID,然后为新表查询这些值的主要内容,如果未能解决你的问题,请参考以下文章
将 spark DataFrame 中的行收集到 JSON 对象中,然后将对象放入另一个 DF
JQuery 对带有checkbox的table操作 遍历选中的行的某一列的数据
Javascript - 计算对象数组中的重复项并将计数存储为新对象
单击编辑按钮时,Kendoui Grid 获取选定的行 ID