PHP를 이용한 jQuery Ajax POST 예제


682

양식에서 데이터베이스로 데이터를 보내려고합니다. 사용중인 양식은 다음과 같습니다.

<form name="foo" action="form.php" method="POST" id="foo">
    <label for="bar">A bar</label>
    <input id="bar" name="bar" type="text" value="" />
    <input type="submit" value="Send" />
</form>

일반적인 접근 방식은 양식을 제출하는 것이지만 이렇게하면 브라우저가 리디렉션됩니다. jQuery와 Ajax를 사용하면 모든 양식의 데이터를 캡처하여 PHP 스크립트 (예 : form.php )에 제출할 수 있습니까?


3
undletion 뒤에 추론에 대한 관련 메타 토론 을 참조하십시오 .
TRiG

간단한 바닐라 js 솔루션 : stackoverflow.com/a/57285063/7910454
Leonheess

답변:


939

기본 사용법은 .ajax다음과 같습니다.

HTML :

<form id="foo">
    <label for="bar">A bar</label>
    <input id="bar" name="bar" type="text" value="" />

    <input type="submit" value="Send" />
</form>

jQuery :

// Variable to hold request
var request;

// Bind to the submit event of our form
$("#foo").submit(function(event){

    // Prevent default posting of form - put here to work in case of errors
    event.preventDefault();

    // Abort any pending request
    if (request) {
        request.abort();
    }
    // setup some local variables
    var $form = $(this);

    // Let's select and cache all the fields
    var $inputs = $form.find("input, select, button, textarea");

    // Serialize the data in the form
    var serializedData = $form.serialize();

    // Let's disable the inputs for the duration of the Ajax request.
    // Note: we disable elements AFTER the form data has been serialized.
    // Disabled form elements will not be serialized.
    $inputs.prop("disabled", true);

    // Fire off the request to /form.php
    request = $.ajax({
        url: "/form.php",
        type: "post",
        data: serializedData
    });

    // Callback handler that will be called on success
    request.done(function (response, textStatus, jqXHR){
        // Log a message to the console
        console.log("Hooray, it worked!");
    });

    // Callback handler that will be called on failure
    request.fail(function (jqXHR, textStatus, errorThrown){
        // Log the error to the console
        console.error(
            "The following error occurred: "+
            textStatus, errorThrown
        );
    });

    // Callback handler that will be called regardless
    // if the request failed or succeeded
    request.always(function () {
        // Reenable the inputs
        $inputs.prop("disabled", false);
    });

});

참고 : jQuery를 1.8 이후 .success(), .error().complete()찬성되지 않으며 .done(), .fail()하고 .always().

참고 : 위의 스 니펫은 DOM 준비 후에 수행해야하므로 $(document).ready()처리기 내에 넣거나 $()축약 형을 사용해야합니다 .

팁 : 당신은 할 수 체인 과 같이 콜백 핸들러를 :$.ajax().done().fail().always();

PHP (즉, form.php) :

// You can access the values posted by jQuery.ajax
// through the global variable $_POST, like this:
$bar = isset($_POST['bar']) ? $_POST['bar'] : null;

참고 : 주입 및 기타 악성 코드를 방지하기 위해 항상 게시 된 데이터를 삭제하십시오 .

위의 JavaScript 코드 .post대신 속기 를 사용할 수도 있습니다 .ajax.

$.post('/form.php', serializedData, function(response) {
    // Log the response to the console
    console.log("Response: "+response);
});

참고 : 위 JavaScript 코드는 jQuery 1.8 이상에서 작동하도록 만들어졌지만 이전 버전에서는 jQuery 1.5까지 작동해야합니다.


6
버그를 수정하기 위해 답변을 편집했습니다 : request로컬 var 만들기가 if (request) request.abort();작동하지 않는 것으로 선언되었습니다 .
Andrey Mikhaylov-lolmaus

23
이 예제를 사용하는 데 많은 시간을 소비 / 낭비 / 투자했기 때문에 매우 중요합니다. $ (document) .ready 블록 내에서 이벤트를 바인드하거나 바인드를 실행하기 전에 FORM을로드해야합니다. 그렇지 않으면 바인딩이 호출되지 않은 지옥에서 WHY를 파악하는 데 많은 시간을 소비합니다.
Philibert Perusse

3
@PhilibertPerusse 이벤트 바인딩과 마찬가지로 DOM에 바인딩하기 전에 또는 위임 된 바인딩을 사용하는 경우 DOM에 요소가 있어야합니다.
mekwall

10
네, 이해합니다 그러나 나는 항상 $ (document) .ready 블록을 둘러싼 많은 예제를 찾았으므로 예제는 독립적입니다. 필자는이 글에 걸려 넘어져서 댓글 글타래와이 초보자 '팁'을 읽게 될 미래의 사용자에 대한 글을 썼다
Philibert Perusse

5
이를 자신의 코드에 적용하는 경우 'name'속성이 입력에 중요하므로 그렇지 않으면 입력 serialize()을 건너 뜁니다.
벤 플린

216

jQuery 를 사용하여 Ajax 요청을 작성하려면 다음 코드로이를 수행 할 수 있습니다.

HTML :

<form id="foo">
    <label for="bar">A bar</label>
    <input id="bar" name="bar" type="text" value="" />
    <input type="submit" value="Send" />
</form>

<!-- The result of the search will be rendered inside this div -->
<div id="result"></div>

자바 스크립트 :

방법 1

 /* Get from elements values */
 var values = $(this).serialize();

 $.ajax({
        url: "test.php",
        type: "post",
        data: values ,
        success: function (response) {

           // You will get response from your PHP page (what you echo or print)
        },
        error: function(jqXHR, textStatus, errorThrown) {
           console.log(textStatus, errorThrown);
        }
    });

방법 2

/* Attach a submit handler to the form */
$("#foo").submit(function(event) {
    var ajaxRequest;

    /* Stop form from submitting normally */
    event.preventDefault();

    /* Clear result div*/
    $("#result").html('');

    /* Get from elements values */
    var values = $(this).serialize();

    /* Send the data using post and put the results in a div. */
    /* I am not aborting the previous request, because it's an
       asynchronous request, meaning once it's sent it's out
       there. But in case you want to abort it you can do it
       by abort(). jQuery Ajax methods return an XMLHttpRequest
       object, so you can just use abort(). */
       ajaxRequest= $.ajax({
            url: "test.php",
            type: "post",
            data: values
        });

    /*  Request can be aborted by ajaxRequest.abort() */

    ajaxRequest.done(function (response, textStatus, jqXHR){

         // Show successfully for submit message
         $("#result").html('Submitted successfully');
    });

    /* On failure of request this function will be called  */
    ajaxRequest.fail(function (){

        // Show error
        $("#result").html('There is error while submit');
    });

.success(), .error()그리고 .complete()콜백의로 사용되지 않습니다 jQuery를 1.8 . 그들의 궁극적 인 제거를위한 코드를 준비하려면, 사용 .done(), .fail().always()대신.

MDN: abort(). 요청이 이미 전송 된 경우이 메소드는 요청을 중단합니다.

이제 Ajax 요청을 성공적으로 보냈으며 이제 서버로 데이터를 가져갈 차례입니다.

PHP

우리는 Ajax 호출 (에서 POST 요청을 따라 type: "post"), 우리는 지금 잡아 데이터 중 하나를 사용 할 수 있습니다 $_REQUEST또는 $_POST:

  $bar = $_POST['bar']

POST 요청에서 얻는 것을 간단히 볼 수도 있습니다. BTW, 설정되어 있는지 확인하십시오 $_POST. 그렇지 않으면 오류가 발생합니다.

var_dump($_POST);
// Or
print_r($_POST);

그리고 당신은 데이터베이스에 값을 삽입하고 있습니다. 조회를 작성하기 전에 모든 요청 (GET 또는 POST를 작성했는지 여부)을 올바르게 감지 하거나 이스케이프 했는지 확인하십시오 . 가장 좋은 것은 준비된 진술을 사용하는 것 입니다.

그리고 데이터를 다시 페이지로 되돌리려면 아래와 같이 해당 데이터를 에코하면됩니다.

// 1. Without JSON
   echo "Hello, this is one"

// 2. By JSON. Then here is where I want to send a value back to the success of the Ajax below
echo json_encode(array('returned_val' => 'yoho'));

그리고 당신은 그것을 얻을 수 있습니다 :

 ajaxRequest.done(function (response){
    alert(response);
 });

몇 가지 속기 방법이 있습니다. 아래 코드를 사용할 수 있습니다. 같은 작업을 수행합니다.

var ajaxRequest= $.post("test.php", values, function(data) {
  alert(data);
})
  .fail(function() {
    alert("error");
  })
  .always(function() {
    alert("finished");
});

@Clarence bar는 입력 유형 텍스트 이름이며 게시 방법을 고소하기 때문에 $ _POST [ 'bar']를 사용하여 값을 가져옵니다
NullPoiиteя

4
JSON 사용하고 싶은 누군가를 위해 - JSON을 사용하는 동안 호출은 매개 변수의 데이터 유형을 포함해야한다 : 'JSON'
K. 킬리안 린드버그

4
@CarlLindberg-jQuery가 응답의 MIME 유형 (을 설정하지 않은 경우 수행해야 할 작업)을 기반으로 추측하여 dataTypeJSON 또는 다른 형식을 허용 하려면 어떻게해야합니까 ?
nnnnnn

@nnnnnn 당신 말이 맞아요 - 그의 더 나은 방법 - 참 기본값은 : 지능형 추측
K. 킬리안 린드버그

JSON 응답 객체 (data.returned_val)에 액세스하려면 원래 아약스 호출에 dataType : "json"을 포함시키는 것을 잊지 마십시오
Adelmar

56

PHP + Ajax로 게시하는 방법과 실패시 다시 발생하는 오류에 대한 자세한 방법을 공유하고 싶습니다.

우선, 예를 들어 form.php및과 같이 두 개의 파일을 만듭니다 process.php.

먼저을 만들어서 메소드를 form사용하여 제출합니다 jQuery .ajax(). 나머지는 주석에 설명됩니다.


form.php

<form method="post" name="postForm">
    <ul>
        <li>
            <label>Name</label>
            <input type="text" name="name" id="name" placeholder="Bruce Wayne">
            <span class="throw_error"></span>
            <span id="success"></span>
       </li>
   </ul>
   <input type="submit" value="Send" />
</form>


jQuery 클라이언트 측 유효성 검증을 사용하여 양식의 유효성을 검증하고 데이터를에 전달하십시오 process.php.

$(document).ready(function() {
    $('form').submit(function(event) { //Trigger on form submit
        $('#name + .throw_error').empty(); //Clear the messages first
        $('#success').empty();

        //Validate fields if required using jQuery

        var postForm = { //Fetch form data
            'name'     : $('input[name=name]').val() //Store name fields value
        };

        $.ajax({ //Process the form using $.ajax()
            type      : 'POST', //Method type
            url       : 'process.php', //Your form processing file URL
            data      : postForm, //Forms name
            dataType  : 'json',
            success   : function(data) {
                            if (!data.success) { //If fails
                                if (data.errors.name) { //Returned if any error from process.php
                                    $('.throw_error').fadeIn(1000).html(data.errors.name); //Throw relevant error
                                }
                            }
                            else {
                                    $('#success').fadeIn(1000).append('<p>' + data.posted + '</p>'); //If successful, than throw a success message
                                }
                            }
        });
        event.preventDefault(); //Prevent the default submit
    });
});

이제 우리는 살펴볼 것입니다 process.php

$errors = array(); //To store errors
$form_data = array(); //Pass back the data to `form.php`

/* Validate the form on the server side */
if (empty($_POST['name'])) { //Name cannot be empty
    $errors['name'] = 'Name cannot be blank';
}

if (!empty($errors)) { //If errors in validation
    $form_data['success'] = false;
    $form_data['errors']  = $errors;
}
else { //If not, process the form, and return true on success
    $form_data['success'] = true;
    $form_data['posted'] = 'Data Was Posted Successfully';
}

//Return the data back to form.php
echo json_encode($form_data);

프로젝트 파일은 http://projects.decodingweb.com/simple_ajax_form.zip 에서 다운로드 할 수 있습니다 .


27

직렬화를 사용할 수 있습니다. 아래는 예입니다.

$("#submit_btn").click(function(){
    $('.error_status').html();
        if($("form#frm_message_board").valid())
        {
            $.ajax({
                type: "POST",
                url: "<?php echo site_url('message_board/add');?>",
                data: $('#frm_message_board').serialize(),
                success: function(msg) {
                    var msg = $.parseJSON(msg);
                    if(msg.success=='yes')
                    {
                        return true;
                    }
                    else
                    {
                        alert('Server error');
                        return false;
                    }
                }
            });
        }
        return false;
    });

2
$.parseJSON()감사합니다. 다른 답변을 기반으로 출력을 해석하는 데 문제가있었습니다.
foochow

21

HTML :

    <form name="foo" action="form.php" method="POST" id="foo">
        <label for="bar">A bar</label>
        <input id="bar" class="inputs" name="bar" type="text" value="" />
        <input type="submit" value="Send" onclick="submitform(); return false;" />
    </form>

자바 스크립트 :

   function submitform()
   {
       var inputs = document.getElementsByClassName("inputs");
       var formdata = new FormData();
       for(var i=0; i<inputs.length; i++)
       {
           formdata.append(inputs[i].name, inputs[i].value);
       }
       var xmlhttp;
       if(window.XMLHttpRequest)
       {
           xmlhttp = new XMLHttpRequest;
       }
       else
       {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       }
       xmlhttp.onreadystatechange = function()
       {
          if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
          {

          }
       }
       xmlhttp.open("POST", "insert.php");
       xmlhttp.send(formdata);
   }

18

아래 표시된 방법을 사용합니다. 파일과 같은 모든 것을 제출합니다.

$(document).on("submit", "form", function(event)
{
    event.preventDefault();

    var url  = $(this).attr("action");
    $.ajax({
        url: url,
        type: 'POST',
        dataType: "JSON",
        data: new FormData(this),
        processData: false,
        contentType: false,
        success: function (data, status)
        {

        },
        error: function (xhr, desc, err)
        {
            console.log("error");
        }
    });
});

14

jQuery Ajax를 사용하여 데이터를 보내려면 양식 태그와 제출 버튼이 필요하지 않습니다.

예:

<script>
    $(document).ready(function () {
        $("#btnSend").click(function () {
            $.ajax({
                url: 'process.php',
                type: 'POST',
                data: {bar: $("#bar").val()},
                success: function (result) {
                    alert('success');
                }
            });
        });
    });
</script>

<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input id="btnSend" type="button" value="Send" />

10
<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<form method="post" id="form_content" action="Javascript:void(0);">
    <button id="desc" name="desc" value="desc" style="display:none;">desc</button>
    <button id="asc" name="asc"  value="asc">asc</button>
    <input type='hidden' id='check' value=''/>
</form>

<div id="demoajax"></div>

<script>
    numbers = '';
    $('#form_content button').click(function(){
        $('#form_content button').toggle();
        numbers = this.id;
        function_two(numbers);
    });

    function function_two(numbers){
        if (numbers === '')
        {
            $('#check').val("asc");
        }
        else
        {
            $('#check').val(numbers);
        }
        //alert(sort_var);

        $.ajax({
            url: 'test.php',
            type: 'POST',
            data: $('#form_content').serialize(),
            success: function(data){
                $('#demoajax').show();
                $('#demoajax').html(data);
                }
        });

        return false;
    }
    $(document).ready(function_two());
</script>

당신과 다른 답변의 ID 차이는 무엇입니까?
NullPoiиteя

11
그것은 나에 의해 게시되고 다른 사람들은 다른 사람들에 의해 게시됩니다.
john

6

제출 전 및 제출 후 Ajax 오류 및 로더를 처리하면 다음과 같은 경고 부트 상자가 표시됩니다.

var formData = formData;

$.ajax({
    type: "POST",
    url: url,
    async: false,
    data: formData, // Only input
    processData: false,
    contentType: false,
    xhr: function ()
    {
        $("#load_consulting").show();
        var xhr = new window.XMLHttpRequest();

        // Upload progress
        xhr.upload.addEventListener("progress", function (evt) {
            if (evt.lengthComputable) {
                var percentComplete = (evt.loaded / evt.total) * 100;
                $('#addLoad .progress-bar').css('width', percentComplete + '%');
            }
        }, false);

        // Download progress
        xhr.addEventListener("progress", function (evt) {
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
            }
        }, false);
        return xhr;
    },
    beforeSend: function (xhr) {
        qyuraLoader.startLoader();
    },
    success: function (response, textStatus, jqXHR) {
        qyuraLoader.stopLoader();
        try {
            $("#load_consulting").hide();

            var data = $.parseJSON(response);
            if (data.status == 0)
            {
                if (data.isAlive)
                {
                    $('#addLoad .progress-bar').css('width', '00%');
                    console.log(data.errors);
                    $.each(data.errors, function (index, value) {
                        if (typeof data.custom == 'undefined') {
                            $('#err_' + index).html(value);
                        }
                        else
                        {
                            $('#err_' + index).addClass('error');

                            if (index == 'TopError')
                            {
                                $('#er_' + index).html(value);
                            }
                            else {
                                $('#er_TopError').append('<p>' + value + '</p>');
                            }
                        }
                    });
                    if (data.errors.TopError) {
                        $('#er_TopError').show();
                        $('#er_TopError').html(data.errors.TopError);
                        setTimeout(function () {
                            $('#er_TopError').hide(5000);
                            $('#er_TopError').html('');
                        }, 5000);
                    }
                }
                else
                {
                    $('#headLogin').html(data.loginMod);
                }
            } else {
                //document.getElementById("setData").reset();
                $('#myModal').modal('hide');
                $('#successTop').show();
                $('#successTop').html(data.msg);
                if (data.msg != '' && data.msg != "undefined") {

                    bootbox.alert({closeButton: false, message: data.msg, callback: function () {
                            if (data.url) {
                                window.location.href = '<?php echo site_url() ?>' + '/' + data.url;
                            } else {
                                location.reload(true);
                            }
                        }});
                } else {
                    bootbox.alert({closeButton: false, message: "Success", callback: function () {
                        if (data.url) {
                            window.location.href = '<?php echo site_url() ?>' + '/' + data.url;
                        } else {
                            location.reload(true);
                        }
                    }});
                }

            }
        }
        catch (e) {
            if (e) {
                $('#er_TopError').show();
                $('#er_TopError').html(e);
                setTimeout(function () {
                    $('#er_TopError').hide(5000);
                    $('#er_TopError').html('');
                }, 5000);
            }
        }
    }
});

5

몇 년 동안이 간단한 한 줄 코드를 문제없이 사용하고 있습니다 (jQuery 필요).

<script src="http://malsup.github.com/jquery.form.js"></script> 
<script type="text/javascript">
    function ap(x,y) {$("#" + y).load(x);};
    function af(x,y) {$("#" + x ).ajaxSubmit({target: '#' + y});return false;};
</script>

여기서 ap ()는 Ajax 페이지를 의미하고 af ()는 Ajax 형식을 의미합니다. 양식에서 af () 함수를 호출하면 양식이 URL에 게시되고 원하는 HTML 요소에 응답이로드됩니다.

<form id="form_id">
    ...
    <input type="button" onclick="af('form_id','load_response_id')"/>
</form>
<div id="load_response_id">this is where response will be loaded</div>

서버 파일이 포함 되었으면합니다. 테스트 방법을 모릅니다.
johny 왜

4

PHP 파일에서 다음을 입력하십시오 :

$content_raw = file_get_contents("php://input"); // THIS IS WHAT YOU NEED
$decoded_data = json_decode($content_raw, true); // THIS IS WHAT YOU NEED
$bar = $decoded_data['bar']; // THIS IS WHAT YOU NEED
$time = $decoded_data['time'];
$hash = $decoded_data['hash'];
echo "You have sent a POST request containing the bar variable with the value $bar";

js 파일에서 데이터 객체와 함께 ajax를 보냅니다.

var data = { 
    bar : 'bar value',
    time: calculatedTimeStamp,
    hash: calculatedHash,
    uid: userID,
    sid: sessionID,
    iid: itemID
};

$.ajax({
    method: 'POST',
    crossDomain: true,
    dataType: 'json',
    crossOrigin: true,
    async: true,
    contentType: 'application/json',
    data: data,
    headers: {
        'Access-Control-Allow-Methods': '*',
        "Access-Control-Allow-Credentials": true,
        "Access-Control-Allow-Headers" : "Access-Control-Allow-Headers, Origin, X-Requested-With, Content-Type, Accept, Authorization",
        "Access-Control-Allow-Origin": "*",
        "Control-Allow-Origin": "*",
        "cache-control": "no-cache",
        'Content-Type': 'application/json'
    },
    url: 'https://yoururl.com/somephpfile.php',
    success: function(response){
        console.log("Respond was: ", response);
    },
    error: function (request, status, error) {
        console.log("There was an error: ", request.responseText);
    }
  })

또는 양식 제출과 함께 그대로 유지하십시오. 클라이언트가 입력 한 일부 양식 데이터뿐만 아니라 계산 된 추가 컨텐츠로 수정 된 요청을 보내려는 경우에만 필요합니다. 예를 들어, 해시, 타임 스탬프, 사용자 ID, 세션 ID 등.


2

이것을 확인하십시오. 완전한 Ajax 요청 코드입니다.

$('#foo').submit(function(event) {
    // Get the form data
    // There are many ways to get this data using jQuery (you
    // can use the class or id also)
    var formData = $('#foo').serialize();
    var url = 'URL of the request';

    // Process the form.
    $.ajax({
        type        : 'POST',   // Define the type of HTTP verb we want to use
        url         : 'url/',   // The URL where we want to POST
        data        : formData, // Our data object
        dataType    : 'json',   // What type of data do we expect back.
        beforeSend : function() {

            // This will run before sending an Ajax request.
            // Do whatever activity you want, like show loaded.
        },
        success:function(response){
            var obj = eval(response);
            if(obj)
            {
                if(obj.error==0){
                    alert('success');
                }
                else{
                    alert('error');
                }
            }
        },
        complete : function() {
            // This will run after sending an Ajax complete
        },
        error:function (xhr, ajaxOptions, thrownError){
            alert('error occured');
            // If any error occurs in request
        }
    });

    // Stop the form from submitting the normal way
    // and refreshing the page
    event.preventDefault();
});

이것은 내가 찾고있는 것입니다.
Nirav Bhoi

2

기사 는 jQuery 양식 제출에 대해 알아야 할 모든 것을 포함 하는 매우 유용한 기사 입니다.

기사 요약 :

간단한 HTML 양식 제출

HTML :

<form action="path/to/server/script" method="post" id="my_form">
    <label>Name</label>
    <input type="text" name="name" />
    <label>Email</label>
    <input type="email" name="email" />
    <label>Website</label>
    <input type="url" name="website" />
    <input type="submit" name="submit" value="Submit Form" />
    <div id="server-results"><!-- For server results --></div>
</form>

자바 스크립트 :

$("#my_form").submit(function(event){
    event.preventDefault(); // Prevent default action
    var post_url = $(this).attr("action"); // Get the form action URL
    var request_method = $(this).attr("method"); // Get form GET/POST method
    var form_data = $(this).serialize(); // Encode form elements for submission

    $.ajax({
        url : post_url,
        type: request_method,
        data : form_data
    }).done(function(response){ //
        $("#server-results").html(response);
    });
});

HTML 멀티 파트 / 양식 데이터 양식 제출

서버에 파일을 업로드하기 위해 XMLHttpRequest2에 사용 가능한 FormData 인터페이스를 사용하여 FormData 객체를 구성하고 jQuery Ajax를 사용하여 서버로 쉽게 전송할 수 있습니다.

HTML :

<form action="path/to/server/script" method="post" id="my_form">
    <label>Name</label>
    <input type="text" name="name" />
    <label>Email</label>
    <input type="email" name="email" />
    <label>Website</label>
    <input type="url" name="website" />
    <input type="file" name="my_file[]" /> <!-- File Field Added -->
    <input type="submit" name="submit" value="Submit Form" />
    <div id="server-results"><!-- For server results --></div>
</form>

자바 스크립트 :

$("#my_form").submit(function(event){
    event.preventDefault(); // Prevent default action
    var post_url = $(this).attr("action"); // Get form action URL
    var request_method = $(this).attr("method"); // Get form GET/POST method
    var form_data = new FormData(this); // Creates new FormData object
    $.ajax({
        url : post_url,
        type: request_method,
        data : form_data,
        contentType: false,
        cache: false,
        processData: false
    }).done(function(response){ //
        $("#server-results").html(response);
    });
});

이게 도움이 되길 바란다.


2

Fetch API 가 도입 된 이후 로 jQuery Ajax 또는 XMLHttpRequests로 더 이상 그렇게 할 이유가 없습니다. 바닐라 JavaScript에서 양식 데이터를 PHP 스크립트에 POST하려면 다음을 수행하십시오.

function postData() {
    const form = document.getElementById('form');
    const data = new FormData();
    data.append('name', form.name.value);

    fetch('../php/contact.php', {method: 'POST', body: data}).then(response => {
        if (!response.ok){
            throw new Error('Network response was not ok.');
        }
    }).catch(err => console.log(err));
}
<form id="form" action="javascript:postData()">
    <input id="name" name="name" placeholder="Name" type="text" required>
    <input type="submit" value="Submit">
</form>

다음은 데이터를 가져와 이메일을 보내는 PHP 스크립트의 매우 기본적인 예입니다.

<?php
    header('Content-type: text/html; charset=utf-8');

    if (isset($_POST['name'])) {
        $name = $_POST['name'];
    }

    $to = "test@example.com";
    $subject = "New name submitted";
    $body = "You received the following name: $name";

    mail($to, $subject, $body);

인터넷 익스플로러 지원은 jQuery AJAX를 계속 사용하는 이유 일 수 있습니다
Huub S

@HuubS 왜? 폴리 필 만 사용하십시오. jQuery가 죽었습니다 IMHO.
leonheess
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.