Я тестирую, используя ajax форму отправки (представь себе страницу "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>
2
doflamingo 11 Янв 2017 в 14:33

5 ответов

Лучший ответ

В вашем случае лучший вариант получить значения в формате 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.
});
3
Kalimah 11 Янв 2017 в 12:12

Значение 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;
    }
});
1
Super User 11 Янв 2017 в 12:23

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

Отредактируйте ваш ajax следующим образом:

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

Затем вы можете получить вот так в вашем контроллере:

parse_str($_POST['formData'], $var);
echo "<pre>";
print_r($var);
exit;
2
marc_s 16 Янв 2017 в 20:02

Меняться от

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

Кому

alert(data); // show response from the php script.
1
dhruv jadia 11 Янв 2017 в 12:17

Сделайте некоторые изменения в JavaScript здесь:

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

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

<div id="response"></div>
1
Zain Farooq 11 Янв 2017 в 11:42