페이지를 새로 고치지 않고 성공 응답 텍스트와 함께 AJAX & PHP로 양식 제출

KevinT

이것이 내 첫 번째 질문이며 올바르게하고 있기를 바랍니다.
저는이 "코딩 세계"의 초보자이며 여기에있는 답변을 사용하여 이미 약간의 진전을 이루었습니다!

오늘 저는 AJAX 및 PHP를 통한 양식 제출에 문제가 있습니다. AJAX 부분을 생략하면. 삽입 양식은 훌륭하게 작동하고해야 할 일을 수행하지만 AJAX로 제출하려고 할 때 아무것도 수행하지 않고 페이지를 새로 고칩니다. AJAX를 사용하여 페이지 새로 고침없이 HTML 부분에 오류 div를 설정하고 싶습니다.

사용 된 코드는 다음과 같습니다.

HTML :

<form class="form" action="../actions/insertUser.php" method="post" id="createUserForm">
    <div class="row">
        <div class="col">
            <div class="row">
                <div class="col">
                    <div class="form-group">
                        <label>Gebruikersnaam</label>
                        <input 
                        class="form-control"
                        id="userGebruikersnaam" 
                        type="text" 
                        name="userGebruikersnaam" 
                        placeholder="JODO"
                        value=""
                        maxlength="4"
                        pattern="[A-Za-z]{4}"
                        title="Maximaal 4 letters"
                        required>
                        <div id="form-info"></div>
                        <small class="small-form-text">Eerste 2 karakters Voornaam &amp; Eerste 2 karakters Achternaam<hr></small>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col">
                    <div class="form-group">
                        <label>Voornaam</label>
                        <input 
                        class="form-control"
                        id="userVoorNaam" 
                        type="text" 
                        name="userVoorNaam" 
                        placeholder="John" 
                        value=""
                        required>
                        <div id="form-info"></div>
                    </div>
                </div>
                <div class="col">
                    <div class="form-group">
                        <label>Achternaam</label>
                        <input 
                        class="form-control"
                        id="userNaam" 
                        type="text" 
                        name="userNaam"
                        placeholder="Doe" 
                        value=""
                        required>
                        <div id="form-info"></div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col">
                    <div class="form-group">
                        <label>Email</label>
                        <input 
                        class="form-control"
                        id="userMail"
                        type="email" 
                        name="userMail"
                        placeholder="[email protected]" 
                        value=""
                        maxlength="50"
                        pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
                        title="Controleer het opgegeven Emailadres"
                        required>
                        <div id="form-info"></div>
                    </div>
                </div>
            </div>
            <div class="row" style="width:60%">
                <div class="col-md-4">
                    <label for="userGender">Geslacht:</label>
                </div> 
                <div class="col-md-3 genderRadio">
                    <div class="form-group">
                        <label>
                            <input type="radio" id="userGender" name="userGender" value="man" required>
                                Man
                            </label>
                        </div>
                    </div>
                    <div class="col-md-3 genderRadio">
                    <div class="form-group">
                            <label>
                            <input type="radio" id="userGender" name="userGender" value="vrouw" required>
                                Vrouw
                            </label>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-2">
                    <label for="userAfdeling">Afdeling:</label>
                </div>
                <div class="col-md-6">
                    <select class="form-control form-control-sm" name="userAfdeling" id="userAfdeling" required>
                        <option value=""></option>
                        <option value="Administratie">Administratie</option>
                            <option value="After-Sales">After-Sales</option>
                            <option value="Carrosserie">Carrosserie</option>
                            <option value="Sales">Sales</option>
                            <option value="Tweedehands">Tweedehands</option>
                    </select>
                </div>
            </div><br>
            <div class="row">
                <div class="col-md-2">
                    <label for="userRole">Machtiging:</label>
                </div>
                <div class="col-md-6">
                    <select class="form-control form-control-sm" name="userRole" id="userRole" required>
                        <option value=""></option>
                        <option value="gebruiker">Gebruiker</option>
                            <option value="admin">Admin</option>
                    </select>
                </div>
            </div>
            <div class="row">
                <div class="col d-flex justify-content-end">
                    <button class="btn btn-primary" type="submit" name="createUser" id="submit_btn" value=""><i class="fas fa-fw fa-user-plus"></i> Creëer
                    </button>

                </div>
            </div>
        </div>
    </div>
</form>

PHP :

if (isset($_POST['createUser'])) {

    $userGebruikersnaam = strtoupper($_POST['userGebruikersnaam']);
    $userVoorNaam       = htmlspecialchars(ucwords($_POST['userVoorNaam'])); 
    $userNaam           = htmlspecialchars(ucwords($_POST['userNaam']));
    $userMail           = filter_var($_POST['userMail'], FILTER_SANITIZE_EMAIL);
    $userGender         = htmlspecialchars($_POST['userGender']);
    $userAfdeling       = htmlspecialchars($_POST['userAfdeling']);
    $userRole           = htmlspecialchars($_POST['userRole']);
    $userActief         = 0;
    $userCreateDate     = date("Y-m-d");
    /*Random Wachtwoord met Hash*/
    $wachtwoord = randomPassword();
        $optie = ['cost' => 11];
    /*HashedWachtwoord*/
    $userWachtwoord = password_hash($wachtwoord, PASSWORD_DEFAULT, $optie);

    $sql_user = "SELECT * FROM gebruikers WHERE gebruikersnaam ='$userGebruikersnaam'";
    $sql_email = "SELECT * FROM gebruikers WHERE email='$userMail'";
    $res_user = mysqli_query($con, $sql_user);
    $res_email = mysqli_query($con, $sql_email);

    if (mysqli_num_rows($res_user) > 0 ) {
        http_response_code(400);
            echo "Gebruiker bestaat al!";
    } elseif (mysqli_num_rows($res_email) > 0 ) {
            http_response_code(400);
            echo "Email bestaat al!";
        } else{
           // Prepare an insert statement
                $sql = "INSERT INTO gebruikers (gebruikersnaam, email, role, voornaam, naam, actief, 
                wachtwoord, gender, afdeling, datumCreatie) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                if($stmt = $con->prepare($sql)){
                    // Bind variables to the prepared statement as parameters
                    $stmt->bind_param("sssssissss", $userGebruikersnaam, $userMail, $userRole, 
                     $userVoorNaam, $userNaam, $userActief, $userWachtwoord, $userGender, 
                     $userAfdeling, $userCreateDate);
                     $stmt->execute(); 
                     http_response_code(200);
                    echo "Records inserted successfully.";
                    // Close statement
                    $stmt->close();
                } else {
                    http_response_code(400);
                    echo "ERROR: Could not prepare query: $sql. " . $mysqli->error;
            }   
        }
    }
 ?>

jQuery :

$(function() {
    // 'Get' het reset formulier.
    //Aanpassing voor insertUser
    var form = $('#createUserForm');
    //Aanpassing voor insertUser
    var formMessages = $('#form-info'); //-->extra div voor text
    var formInputUser = $('#userGebruikersnaam');
    var formInputEmail = $('#userMail');

    // Opzetten van event listener voor het formulier
    $(form).submit(function(e) {
        // Voorkomen dat de browser het formulier verzend.
        e.preventDefault();

        // Serialiseren van de formulier data.
        var formData = $(form).serialize();

        // Verzenden van formulier met AJAX.
        $.ajax({
            type: 'POST',
            //url: $(form).attr('action'),
            url:"../actions/insertUser.php",
            data: formData
        })
        .done(function(response) {
            // Als het gekoppelde PHP script succesvol is box-succes en succes class toevoegen aan
            // formMessages(DIV #form-info) & formInputPass (INPUT #email)
            $(formMessages).removeClass('error');
            $(formMessages).addClass('success');
            $(formInputUser).removeClass('box-error');
            $(formInputUser).addClass('box-succes');
            $(formInputEmail).removeClass('box-error');
            $(formInputEmail).addClass('box-succes');

            // Zetten van antwoord tekst uit het php script.
            $(formMessages).text(response);

            // Formulier leegmaken.
            $('#userGebruikersnaam').val('');
            $('#userMail').val('');
            //window.location.replace("http://stackoverflow.com");
            setTimeout(function(){ window.location.replace("https://www.patrick-smets-group.be/dashboard2/admin/createUser.php");}, 2500);
        })
        .fail(function(data) {
            // Als het gekoppelde PHP script faalt box-error en error class toevoegen aan
            // formMessages(DIV #form-info) & formInputPass (INPUT #email)
            $(formMessages).removeClass('success');
            $(formMessages).addClass('error');
            $(formInputUser).removeClass('box-succes');
            $(formInputUser).addClass('box-error');
            $(formInputEmail).removeClass('box-succes');
            $(formInputEmail).addClass('box-error');


            // Zetten van antwoord tekst uit het php script.
            if (data.responseText !== '') {
                $(formMessages).text(data.responseText);
            } else {
                $(formMessages).text('Oops! Er liep iets mis, probeer het nogmaals.');
            }
        });
    });
});
Swati

백엔드에서 확인하고 $_POST['createUser']있지만이 값은 백엔드로 전달되지 않으므로 아무것도 인쇄되지 않습니다. 이것은 당신이 사용 $(form).serialize();했기 때문에 여기에 serialize()제출 버튼을 매개 변수 자체로 포함하지 않습니다. 그러나 createUser아래와 같이 매개 변수 를 첨부 할 수 있습니다.

$(function() {
  var form = $('#createUserForm');
  $(form).submit(function(e) {
    e.preventDefault();
    var formData = $(form).serialize() + "&createUser=something";
    console.log(formData)
    //also you need to check for null values else when you click on submit button null values will get sended to backend..
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="form" action="../actions/insertUser.php" method="post" id="createUserForm">
  <div class="row">
    <div class="col">
      <div class="row">
        <div class="col">
          <div class="form-group">
            <label>Gebruikersnaam</label>
            <input class="form-control" id="userGebruikersnaam" type="text" name="userGebruikersnaam" placeholder="JODO" value="" maxlength="4" pattern="[A-Za-z]{4}" title="Maximaal 4 letters" required>
            <div id="form-info"></div>
            <small class="small-form-text">Eerste 2 karakters Voornaam &amp; Eerste 2 karakters Achternaam<hr></small>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col">
          <div class="form-group">
            <label>Voornaam</label>
            <input class="form-control" id="userVoorNaam" type="text" name="userVoorNaam" placeholder="John" value="" required>
            <div id="form-info"></div>
          </div>
        </div>
        <div class="col">
          <div class="form-group">
            <label>Achternaam</label>
            <input class="form-control" id="userNaam" type="text" name="userNaam" placeholder="Doe" value="" required>
            <div id="form-info"></div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col">
          <div class="form-group">
            <label>Email</label>
            <input class="form-control" id="userMail" type="email" name="userMail" placeholder="[email protected]" value="" maxlength="50" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" title="Controleer het opgegeven Emailadres" required>
            <div id="form-info"></div>
          </div>
        </div>
      </div>
      <div class="row" style="width:60%">
        <div class="col-md-4">
          <label for="userGender">Geslacht:</label>
        </div>
        <div class="col-md-3 genderRadio">
          <div class="form-group">
            <label>
                        <input type="radio" id="userGender" name="userGender" value="man" required>
                            Man
                        </label>
          </div>
        </div>
        <div class="col-md-3 genderRadio">
          <div class="form-group">
            <label>
                        <input type="radio" id="userGender" name="userGender" value="vrouw" required>
                            Vrouw
                        </label>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-md-2">
          <label for="userAfdeling">Afdeling:</label>
        </div>
        <div class="col-md-6">
          <select class="form-control form-control-sm" name="userAfdeling" id="userAfdeling" required>
            <option value=""></option>
            <option value="Administratie">Administratie</option>
            <option value="After-Sales">After-Sales</option>
            <option value="Carrosserie">Carrosserie</option>
            <option value="Sales">Sales</option>
            <option value="Tweedehands">Tweedehands</option>
          </select>
        </div>
      </div><br>
      <div class="row">
        <div class="col-md-2">
          <label for="userRole">Machtiging:</label>
        </div>
        <div class="col-md-6">
          <select class="form-control form-control-sm" name="userRole" id="userRole" required>
            <option value=""></option>
            <option value="gebruiker">Gebruiker</option>
            <option value="admin">Admin</option>
          </select>
        </div>
      </div>
      <div class="row">
        <div class="col d-flex justify-content-end">
          <button class="btn btn-primary" type="submit" name="createUser" id="submit_btn" value=""><i class="fas fa-fw fa-user-plus"></i> Creëer
                </button>

        </div>
      </div>
    </div>
  </div>
</form>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

페이지를 새로 고치지 않고 성공 응답 텍스트와 함께 Ajax Php로 양식 제출

분류에서Dev

페이지를 새로 고치지 않고 Ajax 제출 양식

분류에서Dev

부모 페이지를 새로 고치지 않고 PHP Ajax 양식 제출

분류에서Dev

Django, Ajax, jQuery를 사용하여 페이지를 새로 고치지 않고 양식 제출?

분류에서Dev

페이지 새로 고침 PHP없이 Ajax 양식 제출

분류에서Dev

Jquery, Ajax를 사용하여 페이지를 새로 고치지 않고 양식을 제출할 때 데이터베이스를 읽을 수 없습니다.

분류에서Dev

Ajax를 통한 양식 제출 및 페이지 새로 고침없이 JSON을 통해 서블릿에서 응답

분류에서Dev

페이지를 새로 고침하지 않고 양식을 제출하고 자바 스크립트에 연결

분류에서Dev

성공하지 않고 php / ajax로 양식 구현 시도

분류에서Dev

페이지 새로 고침을 트리거하지 않고 Enter를 사용하여 양식 제출

분류에서Dev

PHP 제출 양식 및 성공 메시지와 함께 양식 유지

분류에서Dev

HTML 양식 제출이 페이지를 새로 고치고 대신 다른 기능을 트리거하지 않도록 방지

분류에서Dev

페이지 새로 고침 / 새로 고침이 양식이라는 ajax를 제출하고 텍스트 및 업로드 된 파일 / 이미지를 가져 오는 것을 어떻게 방지합니까?

분류에서Dev

PHP에 jQuery Ajax 양식 제출이 서버의 응답으로 작동하지 않음

분류에서Dev

PHP 양식이 제출되지 않음, 페이지가 새로 고침 됨

분류에서Dev

페이지 새로 고침없이 ajax 양식이 다시 제출되지 않음

분류에서Dev

PHP : 잘못된 양식 제출시 페이지 새로 고침

분류에서Dev

양식 제출 후 PHP mysql 새로 고침 동적 페이지

분류에서Dev

페이지를 새로 고치지 않고 django 양식의 양식 유효성 검사 오류

분류에서Dev

서블릿에 양식 데이터를 제출하고 페이지를 다시로드하지 않고 응답을 검색 하시겠습니까?

분류에서Dev

새로 고치지 않고 ajax jquery 업데이트 페이지

분류에서Dev

페이지 codeigniter를 새로 고치지 않고 ajax로 db 업데이트

분류에서Dev

페이지를 새로 고치지 않으면 AJAX 호출 후 Javascript가 활성화되지 않음

분류에서Dev

페이지 새로 고침을 피하기 위해 ajax 및 PHP로 양식을 제출하는 방법

분류에서Dev

jquery ajax 요청이 PHP 양식 제출 후 새 탭에서 응답하지 않습니다.

분류에서Dev

PHP 문의 양식 : 페이지 새로 고침시 확인 양식 재 제출 팝업 비활성화

분류에서Dev

ajax 텍스트 응답이 새 텍스트로 변경되지 않음

분류에서Dev

페이지를 새로 고치지 않고 데이터베이스 조회로 양식 값 삽입

분류에서Dev

양식 제출 후 페이지 새로 고침 중지

Related 관련 기사

  1. 1

    페이지를 새로 고치지 않고 성공 응답 텍스트와 함께 Ajax Php로 양식 제출

  2. 2

    페이지를 새로 고치지 않고 Ajax 제출 양식

  3. 3

    부모 페이지를 새로 고치지 않고 PHP Ajax 양식 제출

  4. 4

    Django, Ajax, jQuery를 사용하여 페이지를 새로 고치지 않고 양식 제출?

  5. 5

    페이지 새로 고침 PHP없이 Ajax 양식 제출

  6. 6

    Jquery, Ajax를 사용하여 페이지를 새로 고치지 않고 양식을 제출할 때 데이터베이스를 읽을 수 없습니다.

  7. 7

    Ajax를 통한 양식 제출 및 페이지 새로 고침없이 JSON을 통해 서블릿에서 응답

  8. 8

    페이지를 새로 고침하지 않고 양식을 제출하고 자바 스크립트에 연결

  9. 9

    성공하지 않고 php / ajax로 양식 구현 시도

  10. 10

    페이지 새로 고침을 트리거하지 않고 Enter를 사용하여 양식 제출

  11. 11

    PHP 제출 양식 및 성공 메시지와 함께 양식 유지

  12. 12

    HTML 양식 제출이 페이지를 새로 고치고 대신 다른 기능을 트리거하지 않도록 방지

  13. 13

    페이지 새로 고침 / 새로 고침이 양식이라는 ajax를 제출하고 텍스트 및 업로드 된 파일 / 이미지를 가져 오는 것을 어떻게 방지합니까?

  14. 14

    PHP에 jQuery Ajax 양식 제출이 서버의 응답으로 작동하지 않음

  15. 15

    PHP 양식이 제출되지 않음, 페이지가 새로 고침 됨

  16. 16

    페이지 새로 고침없이 ajax 양식이 다시 제출되지 않음

  17. 17

    PHP : 잘못된 양식 제출시 페이지 새로 고침

  18. 18

    양식 제출 후 PHP mysql 새로 고침 동적 페이지

  19. 19

    페이지를 새로 고치지 않고 django 양식의 양식 유효성 검사 오류

  20. 20

    서블릿에 양식 데이터를 제출하고 페이지를 다시로드하지 않고 응답을 검색 하시겠습니까?

  21. 21

    새로 고치지 않고 ajax jquery 업데이트 페이지

  22. 22

    페이지 codeigniter를 새로 고치지 않고 ajax로 db 업데이트

  23. 23

    페이지를 새로 고치지 않으면 AJAX 호출 후 Javascript가 활성화되지 않음

  24. 24

    페이지 새로 고침을 피하기 위해 ajax 및 PHP로 양식을 제출하는 방법

  25. 25

    jquery ajax 요청이 PHP 양식 제출 후 새 탭에서 응답하지 않습니다.

  26. 26

    PHP 문의 양식 : 페이지 새로 고침시 확인 양식 재 제출 팝업 비활성화

  27. 27

    ajax 텍스트 응답이 새 텍스트로 변경되지 않음

  28. 28

    페이지를 새로 고치지 않고 데이터베이스 조회로 양식 값 삽입

  29. 29

    양식 제출 후 페이지 새로 고침 중지

뜨겁다태그

보관