如何将变量从jQuery发布到PHP文件?

时间:2018-11-27 13:44:45

标签: javascript php jquery

我意识到以前有类似问题的其他答案,但是我试图使表中的链接集合唯一,并且似乎无法获取标签的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代码中的变量和键,没有进行任何更改。我对那一瞬间的大声笑充满希望-猜猜我会继续寻找...

5 个答案:

答案 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 }-这意味着变量名应该放在首位,然后您才能发送变量的值。

https://api.jquery.com/jquery.post/ //供参考