ajax submit form, почему он не может эхо $ _POST

Я тестирую с помощью ajax submit form (представить себе страницу «new1.php»)

Вещь, которую я хочу, после нажатия кнопки «Отправить» будет отображать имя и фамилию. Но я не знаю, почему я не вижу имя и фамилию после отправки.

здесь new1.php страница

<?php echo $_POST['firstname']."<br>"; echo $_POST['lastname']."<br>"; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> </head> <body> <form id="myform" action="new1.php" method="post"> Firstname : <input type="text" name="firstname"> <br> Lastname : <input type="text" name="lastname"> <br> <input type="submit" value="Submit"> </form> <script> // this is the id of the form $("#myform").submit(function(e) { $.ajax({ type: "POST", url: 'new1.php', data: $("#myform").serialize(), // serializes the form's elements. success: function(data) { alert('yeah'); // show response from the php script. } }); e.preventDefault(); // avoid to execute the actual submit of the form. }); </script> </body> </html> 

В вашем случае наилучшим вариантом является получение значений в формате JSON с использованием json_encode в вашем PHP-коде, а затем доступ к этим значениям через объект данных.

Пример:

PHP-код:

 if($_POST) { $result['firstname'] = $_POST['firstname']; $result['lastname'] = $_POST['lastname']; echo json_encode($result); die(); // Use die here to stop processing the code further } 

Код JS:

 $("#myform").submit(function (e) { $.ajax({ type : "POST", url : 'new1.php', dataType : 'json', // Notice json here data : $("#myform").serialize(), // serializes the form's elements. success : function (data) { alert('yeah'); // show response from the php script. // make changed here $('input[name="firstname"]').text(data.firstname); $('input[name="lastname"]').text(data.lastname); } }); e.preventDefault(); // avoid to execute the actual submit of the form. }); 

Когда вы используете форму в качестве сериализации, вам нужно как-то извлекать ее.

Измените свой ajax следующим образом:

 data: { formData: $("#myform").serialize()}, 

Затем вы можете получить такую ​​информацию в своем контроллере:

 parse_str($_POST['formData'], $var); echo "<pre>"; print_r($var); exit; 

Внесите некоторые изменения в javascript здесь:

 success: function(data) { $('#response').html(data); // show response from the php script. } 

И в html-коде сделать div с response id

 <div id="response"></div> 

Меняться от

 alert('yeah'); // show response from the php script. 

в

 alert(data); // show response from the php script. 

значение firstname, lastname не будет отображаться, потому что вы вызвали new1.php через ajax, и данные (имя, фамилия и код страницы) возвращаются в java-скрипт-переменную (данные), вам нужно вставить данные в свой документ

Попробуй это

 $.ajax({ type: "POST", url: 'new1.php', data: $("#myform").serialize(), // serializes the form's elements. success: function(data) { document.documentElement.innerHTML = data; } });