Я тестирую с помощью 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; } });