Я понимаю, что раньше были и другие ответы на подобные вопросы, однако я пытаюсь сделать коллекцию ссылок уникальной в таблице и, похоже, не могу получить идентификатор тега для публикации на странице 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-коде без каких-либо изменений. Я надеялся на ту долю секунды, лол - думаю, я буду искать ...
это не проблема с опечаткой? Должен быть VTC, не так ли?
Проверьте, как вы используете $.post(). Вы передаете функции только один аргумент.
Патрик Кью - да, добавил функцию .done, все равно без радости! Разве многие аргументы не являются обязательными? Я имею в виду, что все, что я ищу, это почтовый запрос и ничего взамен, как вставка в HTML или что-то еще, поэтому я не видел смысла
@shakalakaboom Пожалуйста, уделите секунду и посмотрите на код, который у вас есть. Затем посмотрите, как должна вызываться функция. Как вы ожидаете, что ваш постд будет опубликован, если вы не передаете его функции?
Не уверен, думаю, именно поэтому я разместил здесь сообщение об обмене стеками. Похоже, у вас есть решение моей проблемы, и вы не хотите делиться ...
@shakalakaboom Поскольку это было помечено как дубликат, больше нельзя публиковать ответы. Однако сравните этот пример, от документация$.post( "test.php", { name: "John", time: "2pm" } ); с тем, что у вас есть $.post('reservation.php'), {clkID:postid}. Заметили разницу?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы ищете не тот ключ в $_POST. В вызове AJAX вы устанавливаете для параметра имя clkId. Так:
$id = $_POST['postid'];
должно быть
$id = $_POST['clkId'];
Фактически изменение должно быть выполнено в JS, поскольку значение присваивается переменной clkID. Изменение PHP приведет к удалению уведомления, но оно не будет иметь никакого значения.
Ага, скорее поменял их в JS, и все равно безуспешно! Та же ошибка "undefined index: postid"
Добавьте эти изменения в свой PHP-скрипт
От:
$id = $_POST['postid'];
К:
$id = $_POST['clkID'];
Или отредактируйте JS-запрос:
$.post('reservation.php'), {postid:clkID}, function(){/*do something*/};
Привет, спасибо за быстрый ответ. Я понимаю, что сделал там ошибку, но, к сожалению, проблема не в неправильном ключе. На самом деле это, вероятно, неверно, потому что я так долго играл с этой чертовой штукой !!
Проблема с вашим именем переменных.
Напишите, пожалуйста, следующий код:
В 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/ // для справки
в PHP: - $ id = $ _POST ['clkID'];