Проблема с передачей переменной JQuery в php.
Когда я B.php
переменную id на B.php
я получаю эту ошибку
"Notice: Undefined index: id1 in C:\xampp \htdocs\PhpProject1\OtherUsableItems\B.php on line 2
Как решить эту проблему ???? Это A.php
<html> <head> <script src="jquery.js"></script> <script> $(document).ready(function(){ var id = 23; $("#submit").click(function(){ $.post("B.php", { id1: id, } ); }); }); </script> </head> <body> <form action="B.php" method="post" > <input type="submit" id="submit" name="submit"/> </form> </body> </html>
Это B.php
<?php $a =$_POST['id1']; echo $a ; ?>
Я хочу, чтобы переменная id передавалась B.php
Попробуй это:
<html> <head> <script src="jquery.js"></script> <script> $(document).ready(function(){ var id = 23; $("#submit").click(function(){ $.ajax( { url: "B.php", type: "POST", data: { id1: id}, success: function (result) { alert('success'); } }); }); }); </script> </head> <body> <form > <input type="button" id="submit" name="submit"/> </form> </body> </html>
Тогда B.php
<?php $a =isset($_POST['id1'])?$_POST['id1']:'not yet'; echo $a ; ?>
Попробуйте изменить тип ввода на кнопку вместо отправки <input type="button" id="submit" name="submit"/>
Проблема в том, что ваша форма отправлена, $.post
для ajax sumit. Для этого вам нужно предотвратить отправку формы.
<script> $(document).ready(function(){ var id = 23; $("#submit").click(function(){ $.post("B.php", { id1: id, }); event.preventDefault() ; }); }); </script>
Добавить event.preventDefault();
в функции нажатия кнопки
Используйте скрытое поле для установки значения, которое вы хотите отправить. Поскольку вы используете submit, вся ваша форма отправляется. Скрытое поле также отправляется, и к нему можно получить доступ напрямую, используя имя скрытого поля.
E_NOTICE генерируется php, поскольку индекс POST-массива не существует. Вы можете переключить error_reporting для уведомлений, см. http://www.php.net/manual/de/errorfunc.configuration.php#ini.error-reporting или проверить, существует ли индекс:
if( isset($_POST['id1']) ) { // do something }
$(document).ready(function(){ var id = 23; $("#submit").click(function(e){ $.post("B.php", {id1: id} ); e.preventDefault(); }); });
Попробуйте код выше. Во-первых: JS не позволяет делать что-то вроде этого: {id1: id,}
(см. {id1: id,}
в конце). Это особенность PHP. На самом деле, ваш JS-код не должен выполняться вообще, потому что это синтаксическая ошибка (предположим, вы найдете ее в консоли вашего браузера)
Другая проблема: вы должны запретить отправку формы по умолчанию. e.preventDefault()
. Без него будет запущен пост ajax, и будет существовать обычная форма отправки. И ваша форма не имеет элемента с именем id1, предположим, что второй запрос создает это сообщение об ошибке.
EDIT: это сообщение с регулярным отправкой, поэтому браузер перенаправляется на B.php
$(document).ready(function(){ var id = 23; $("#submit").click(function(){ $(this).closest("form") .append($("<input>", {"type":"hidden", "name":"id1", "value":id})); }); });
Попробуйте этот код,
<html> <head> <script src="jquery.js"></script> <script> $(document).ready(function(){ var id = 23; $("#submit").click(function(){ $('#id1').val(id); }); }); </script> </head> <body> <form action="B.php" method="post" > <input type="submit" id="submit" name="submit"/> <input type="hidden" name="id1" id="id1" value=""/> </form> </body> </html>
Здесь вы можете передать значение «id» на B.php, и будет доступ как $ _POST ['id1']
Попробуй это:
<script> $(document).ready(function(){ var id = 23; $("#submit").click(function(e){ e.preventDefault(); $.post("B.php", {id1: id}, function(data){ //<---get the data from B.php console.log(data); //<--------show it here alert(data); }); }); }); </script>
Поскольку вы используете функцию ajax, вам нужно остановить функцию отправки формы. У вас есть {id1 : id,}
запятая здесь {id1 : id,}
это проблема в браузерах IE, но последние другие браузеры будут работать нормально.
Вы отправили эту ошибку:
"Notice: Undefined index: id1 in C:\xampp \htdocs......
Не запускайте страницу в файловой системе. $.post()
не будет работать таким образом.
Вместо этого попробуйте использовать http://localhost/yourapplication/page.php
Или вы можете использовать submit () таким образом
$(function(){ var id = 23; $("#myform").submit(function() { $.post("B.php", { id1: id }).done(function(data) { alert( data ); }); return false; //true(post form data) }); });
И форма
<form id="myform" method="post"> <input type="submit" id="submit" name="submit" /> </form>
EDIT: О, да, для проверки B.php isset или error_reporting (0);
if(isset($_POST['id1'])){ print_r( $_POST ); }