我意识到以前有类似问题的其他答案,但是我试图使表中的链接集合唯一,并且似乎无法获取标签的ID来发布到php页面。 / p>
参见下文:
echo("<p>To reserve a book, click the Book Title.</p>");
echo "<table class='formfield' border='1'>
<tr>
<th>Book ID</th>
<th>ISBN</th>
<th>Book Title</th>
<th>Author</th>
<th>Edition</th>
<th>Year</th>
<th>Category</th>
<th>Reserved</th>
</tr>";
$lnkCount = 0;
while($row = mysqli_fetch_array($sql)) {
$lnkCount++;
echo "<tr>";
echo "<td>" . $row['bookID'] . "</td>";
echo "<td>" . $row['ISBN'] . "</td>";
echo "<td><a class='anchor' id='$lnkCount' href='reservation.php'>" . $row['BookTitle'] . "</a></td>";
echo "<td>" . $row['Author'] . "</td>";
echo "<td>" . $row['Edition'] . "</td>";
echo "<td>" . $row['Year'] . "</td>";
echo "<td>" . $row['CategoryDept'] . "</td>";
echo "<td>" . ($row['Reserved'] ? 'Yes' : 'No') . "</td>";
/*echo "<td><input id='$lnkCount' type='button' value='Reserve Now' onClick='post();'></td>";*/ // display yes/no rather than boolean equivalent...
}
echo "</table>";
然后是我的jQuery:
<script lang="JavaScript" type="text/javascript">
$(".anchor").click(function() {
var clkID = $(this).attr("id");
alert(clkID);
$.post('reservation.php'), {clkID:postid}, function(){/*do something*/};
});
</script>
最后是我的php页面,该页面实际上并不相关,但是为了清楚起见,我将发布它。
$id = $_POST['postid'];
echo("<p>Value detected was: $id</p>"); // this is just to test...
现在,当我单击其中一个链接时,页面将使用我单击的链接的正确ID进行警报。但是,当它连接到php页面(reservations.php)时,出现以下错误:
注意:未定义的索引:第41行的C:\ xampp \ htdocs \ webDevProj \ reservation.php中的postid 检测到的值为:
我敢肯定,你们中> = 1的人会知道我对jQuery不太了解-因此,如果您了解我的问题并认为有更简单的方法,我将非常感谢您的投入!
p.s。这是给大学分配的:)
编辑#1- 没有看到这个问题与所报告的答案有什么关系。它涉及jQuery .post方法。提供的“解决方案”对php中“未定义索引”的含义给出了各种定义,但对我的问题仍然没有任何意义。
编辑#2- 因此,我更改了JS代码中的变量和键,没有进行任何更改。我对那一瞬间的大声笑充满希望-猜猜我会继续寻找...
答案 0 :(得分:2)
将此更改添加到您的PHP脚本
发件人:
$id = $_POST['postid'];
收件人:
$id = $_POST['clkID'];
或编辑JS请求:
$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};
答案 1 :(得分:1)
您在$_POST
中寻找错误的密钥。在AJAX调用中,将参数设置为名称clkId
。所以:
$id = $_POST['postid'];
应该是
$id = $_POST['clkId'];
答案 2 :(得分:1)
在您的JavaScript中,您将检索到的值存储在clkID中,因此您的jQuery需要为
$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};
会将名称为postid的变量传递给PHP。
答案 3 :(得分:0)
您的变量名称存在问题。
请按照以下代码编写:
在JS中:
var clkID = $(this).attr("id");
$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};
因为您的数据存储在clkID
中。
然后,Ant调用控制器。
$id = $_POST['postid'];
如果您在PHP脚本中更改了变量,则可以获取空数据,因为在JavaScript中postid
中没有定义数据。
答案 4 :(得分:0)
$.post( "reservation.php", { postid: clkID })
.done(function( data ) {
alert( "Data Loaded: " + data );
});
然后在您的php页面中:
$id = $_POST['postid'];
return $id;
//只是测试看看您是否从已完成功能的数据中得到了
{ postid: clkID }
-这意味着变量名应该放在首位,然后您才能发送变量的值。