Как отправить переменную из jQuery в файл PHP?

Я понимаю, что раньше были и другие ответы на подобные вопросы, однако я пытаюсь сделать коллекцию ссылок уникальной в таблице и, похоже, не могу получить идентификатор тега для публикации на странице php.

Увидеть ниже:

            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...

Теперь, когда я нажимаю на одну из ссылок, страница выдает предупреждение с правильным идентификатором ссылки, по которой я щелкнул. Но затем, когда он подключается к странице php (reservations.php), он дает мне следующую ошибку:

Notice: Undefined index: postid in C:\xampp\htdocs\webDevProj\reservation.php on line 41 Value detected was:

Я уверен, что> = 1 из вас будет знать, что я не очень разбираюсь в jQuery, поэтому, если вы понимаете мою проблему и думаете, что есть гораздо более простой способ сделать это, я был бы очень признателен за ваш вклад!

p.s. это для задания в колледже :)

РЕДАКТИРОВАТЬ # 1 - Не понимаю, какое отношение этот вопрос имеет к ответу на него. Он включает в себя методы jQuery .post. Приведенное «решение» дает различные определения того, что означает «неопределенный индекс» в отношении php, но все еще не имеет никакого значения для моего вопроса.

РЕДАКТИРОВАТЬ № 2 - Поэтому я изменил переменную и ключ в своем JS-коде без каких-либо изменений. Я надеялся на ту долю секунды, лол - думаю, я буду искать ...

в PHP: - $ id = $ _POST ['clkID'];

Manoj Singh 27.11.2018 14:46

это не проблема с опечаткой? Должен быть VTC, не так ли?

treyBake 27.11.2018 14:51

Проверьте, как вы используете $.post(). Вы передаете функции только один аргумент.

Patrick Q 27.11.2018 15:07

Патрик Кью - да, добавил функцию .done, все равно без радости! Разве многие аргументы не являются обязательными? Я имею в виду, что все, что я ищу, это почтовый запрос и ничего взамен, как вставка в HTML или что-то еще, поэтому я не видел смысла

shaka lakaboom 27.11.2018 15:25

@shakalakaboom Пожалуйста, уделите секунду и посмотрите на код, который у вас есть. Затем посмотрите, как должна вызываться функция. Как вы ожидаете, что ваш постд будет опубликован, если вы не передаете его функции?

Patrick Q 27.11.2018 15:29

Не уверен, думаю, именно поэтому я разместил здесь сообщение об обмене стеками. Похоже, у вас есть решение моей проблемы, и вы не хотите делиться ...

shaka lakaboom 27.11.2018 15:36

@shakalakaboom Поскольку это было помечено как дубликат, больше нельзя публиковать ответы. Однако сравните этот пример, от документация$.post( "test.php", { name: "John", time: "2pm" } ); с тем, что у вас есть $.post('reservation.php'), {clkID:postid}. Заметили разницу?

Patrick Q 27.11.2018 16:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
7
73
5

Ответы 5

Вы ищете не тот ключ в $_POST. В вызове AJAX вы устанавливаете для параметра имя clkId. Так:

$id = $_POST['postid'];

должно быть

$id = $_POST['clkId'];

Фактически изменение должно быть выполнено в JS, поскольку значение присваивается переменной clkID. Изменение PHP приведет к удалению уведомления, но оно не будет иметь никакого значения.

Patrick Q 27.11.2018 15:00

Ага, скорее поменял их в JS, и все равно безуспешно! Та же ошибка "undefined index: postid"

shaka lakaboom 27.11.2018 15:04

Добавьте эти изменения в свой PHP-скрипт

От:

$id = $_POST['postid'];

К:

$id = $_POST['clkID'];

Или отредактируйте JS-запрос:

$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};

Привет, спасибо за быстрый ответ. Я понимаю, что сделал там ошибку, но, к сожалению, проблема не в неправильном ключе. На самом деле это, вероятно, неверно, потому что я так долго играл с этой чертовой штукой !!

shaka lakaboom 27.11.2018 15:03

Проблема с вашим именем переменных.

Напишите, пожалуйста, следующий код:

В JS:

var clkID = $(this).attr("id");    
$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};

Потому что ваши данные хранятся в clkID. Затем Ant вызывает контроллер.

$id = $_POST['postid'];

Если вы изменили переменную в скрипте PHP, вы можете получить пустые данные, потому что в postid нет данных, определенных в javascript.

В вашем javascript вы сохраняете полученное значение в clkID, поэтому ваш jQuery должен быть

$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};

который передаст эту переменную PHP с именем postid.

$.post( "reservation.php", { postid: clkID }) .done(function( data ) { alert( "Data Loaded: " + data ); });

И на вашей странице php: $id = $_POST['postid']; return $id; // просто чтобы проверить, есть ли у вас это в данных функции done

{ postid: clkID } - это означает, что имя переменной должно быть первым, а затем вы можете отправить значение своей переменной.

https://api.jquery.com/jquery.post/ // для справки

Другие вопросы по теме