【发布时间】:2017-06-13 09:50:43
【问题描述】:
我已经阅读了多种答案,但没有一个有效。 我尝试做的是使 PHP foreach 循环的每个结果都可点击,然后使用 AJAX 将该数据发送到另一个 PHP 文件,现在的问题是无论我做什么,只有最后一个 foreach 结果总是被发送而不是结果我点击了? (无数据库)
循环存在于函数functions.php中:
public function getForeachResult ()
{
$response = $this->GetObject($parameters);
include 'template.php';
}
处理结果的模板template.php:
<?php
foreach ($response->Result->List as $key =>$value) {
?><table id="mytable"><tr>
<th>ID</th>
<th>Date</th>
<th>firstname</th>
<th>lastname</th>
</tr>
<?php foreach ($value as $key=>$value) {?>
<tr class="myrow">
<td><?php echo $value->ID; ?></td>
<td><?php echo date("d-m-Y", strtotime($value->Time)); ?></td>
<td><?php echo $value->FullName; ?></td>
<td><?php echo $value->LastName; ?></td>
</tr>
<?php } ?>
</table><br />
<?php } ?>
在 template.php 的底部调用 AJAX 脚本:
<script>
$('.myrow').click(function() {
$.ajax({
type: "POST",
cache: false,
url: "post.php",
data: { action: 'goTo', value: <?php echo $value->ID ?>}
}).done(function( msg ) {
$('.Data').html(msg);
});
});
在发送 dat 的 post.php 中,我只得到 foreach 循环的最后一个结果 post.php:
if($_POST['action'] == 'goTo') {
var_dump ($_POST);
}
那么我如何确保 AJAX 发送我点击的数据?
【问题讨论】:
-
数据:{ 动作:'goTo',值:$(this).find(td:first).text().trim()}
-
这里的问题是您没有点击哪一行的独特标识符。这就是为什么您始终只能获取最后一行的原因。您应该改为向您的表格添加一个可点击的按钮,该按钮将是唯一的
-
您在第二个循环中重复使用变量
$key和$value,这可能会导致意外结果。重命名第二个循环中的变量。 -
你只得到最后一个值,因为这是你输出的唯一东西——你的 JS 代码在你的 foreach 循环之外。不,你不想把它放在里面,那也没有意义——你必须为每一行定义一个单独的点击处理程序。正如@JYoThI 建议的那样,只需在点击发生时从 HTML 代码中读取数据。
标签: javascript php jquery ajax foreach