как передать переменную jquery в php, а затем отобразить ее

Проблема с передачей переменной 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 ); }