contoh jQuery Ajax POST dengan PHP

682

Saya mencoba mengirim data dari formulir ke database. Inilah formulir yang saya gunakan:

<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>

Pendekatan tipikal adalah mengirimkan formulir, tetapi ini menyebabkan peramban untuk mengarahkan ulang. Menggunakan jQuery dan Ajax , apakah mungkin untuk mengambil semua data formulir dan mengirimkannya ke skrip PHP (contoh, form.php )?

Ciri khas
sumber
3
Lihat diskusi meta terkait untuk alasan di balik penghapusan.
TRiG
Solusi vanilla js sederhana: stackoverflow.com/a/57285063/7910454
leonheess

Jawaban:

939

Penggunaan dasar .ajaxakan terlihat seperti ini:

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);
    });

});

Catatan: Sejak jQuery 1.8 .success(),, .error()dan .complete()tidak digunakan lagi untuk .done(), .fail()dan .always().

Catatan: Ingat bahwa cuplikan di atas harus dilakukan setelah DOM siap, jadi Anda harus memasukkannya ke dalam $(document).ready()handler (atau gunakan $()steno).

Tip: Anda dapat rantai penangan callback seperti ini:$.ajax().done().fail().always();

PHP (yaitu, 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;

Catatan: Selalu bersihkan data yang diposting , untuk mencegah suntikan dan kode berbahaya lainnya.

Anda juga dapat menggunakan singkatan .postdi .ajaxdalam kode JavaScript di atas:

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

Catatan: Kode JavaScript di atas dibuat untuk bekerja dengan jQuery 1.8 dan yang lebih baru, tetapi harus bekerja dengan versi sebelumnya hingga jQuery 1.5.

mekwall
sumber
6
Diedit jawaban Anda untuk memperbaiki bug: requestdinyatakan sebagai pembuatan var lokal if (request) request.abort();tidak pernah berfungsi.
Andrey Mikhaylov - lolmaus
23
Catatan yang SANGAT PENTING, karena saya menghabiskan / membuang / menginvestasikan banyak waktu untuk mencoba menggunakan contoh ini. Anda harus mengikat acara di dalam $ (dokumen). Sudah memblokir ATAU minta FORMULIR dimuat sebelum ikatan dijalankan. Kalau tidak, Anda menghabiskan banyak waktu untuk mencari tahu MENGAPA neraka tidak mengikat.
Philibert Perusse
3
@ PhilibertPerusse Seperti halnya acara apa pun yang mengikat, Anda jelas memerlukan elemen untuk ada di DOM sebelum mencoba untuk mengikatnya, atau jika Anda menggunakan ikatan yang didelegasikan.
mekwall
10
Ya, saya mengerti itu sekarang. Tapi saya menemukan banyak contoh yang selalu memberikan $ (dokumen). Sudah memblokir sehingga contoh mandiri. Saya menulis komentar untuk pengguna masa depan yang mungkin, seperti saya, tersandung pada ini dan akhirnya membaca utas komentar dan 'tip' pemula ini
Philibert Perusse
5
Jika Anda menerapkan ini pada kode Anda sendiri, perhatikan bahwa atribut 'nama' sangat penting untuk input atau sebaliknya serialize()akan melompati mereka.
Ben Flynn
216

Untuk membuat permintaan Ajax menggunakan jQuery Anda dapat melakukan ini dengan kode berikut.

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>

JavaScript:

Metode 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);
        }
    });

Metode 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');
    });

The .success(), .error()dan .complete()callback ditinggalkan pada jQuery 1.8 . Untuk mempersiapkan kode untuk penghapusan akhirnya mereka, menggunakan .done(), .fail()dan .always()sebagai gantinya.

MDN: abort(). Jika permintaan sudah dikirim, metode ini akan membatalkan permintaan.

Jadi kami telah berhasil mengirim permintaan Ajax, dan sekarang saatnya mengambil data ke server.

PHP

Saat kami membuat permintaan POST dalam panggilan Ajax ( type: "post"), kami sekarang dapat mengambil data menggunakan salah satu $_REQUESTatau $_POST:

  $bar = $_POST['bar']

Anda juga dapat melihat apa yang Anda dapatkan dalam permintaan POST hanya dengan baik. BTW, pastikan $_POSTsudah diatur. Kalau tidak, Anda akan mendapatkan kesalahan.

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

Dan Anda memasukkan nilai ke dalam basis data. Pastikan Anda sensitif atau lolos dari semua permintaan (apakah Anda membuat GET atau POST) dengan benar sebelum membuat kueri. Yang terbaik adalah menggunakan pernyataan yang disiapkan .

Dan jika Anda ingin mengembalikan data apa pun ke halaman, Anda dapat melakukannya hanya dengan menggemakan data seperti di bawah ini.

// 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'));

Dan kemudian Anda bisa mendapatkannya seperti:

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

Ada beberapa metode tulisan cepat . Anda dapat menggunakan kode di bawah ini. Itu melakukan pekerjaan yang sama.

var ajaxRequest= $.post("test.php", values, function(data) {
  alert(data);
})
  .fail(function() {
    alert("error");
  })
  .always(function() {
    alert("finished");
});
NullPoiиteя
sumber
@Clarence bar adalah nama tipe input teks dan karena saya menggugat metode posting sehingga $ _POST ['bar'] digunakan untuk mendapatkan nilai itu
NullPoiиteя
4
Bagi siapa pun yang ingin menggunakan json - saat menggunakan JSON panggilan tersebut harus berisi parameter dataType: 'json'
K. Kilian Lindberg
4
@CarlLindberg - Bagaimana jika Anda ingin jQuery menebak berdasarkan jenis respons MIME (yang harus dilakukan ketika Anda tidak mengatur dataType), sehingga Anda berpotensi menerima JSON atau format lain?
nnnnnn
@nnnnnn Anda benar - itu jauh lebih baik - memang sudah baku: Intelligent Guess
K. Kilian Lindberg
Untuk mengakses objek respons JSON (data.returned_val), jangan lupa menyertakan dataType: "json" di panggilan ajax asli Anda
Adelmar
56

Saya ingin berbagi cara terperinci tentang cara memposting dengan PHP + Ajax bersama dengan kesalahan yang dikembalikan pada kegagalan.

Pertama-tama, buat dua file, misalnya form.phpdan process.php.

Kami pertama-tama akan membuat formyang kemudian akan dikirim menggunakan jQuery .ajax()metode Sisanya akan dijelaskan dalam komentar.


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>


Validasi formulir menggunakan validasi sisi klien jQuery dan berikan data 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
    });
});

Sekarang kita akan lihat 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);

File proyek dapat diunduh dari http://projects.decodingweb.com/simple_ajax_form.zip .

Pak Alien
sumber
27

Anda dapat menggunakan cerita bersambung. Di bawah ini adalah contohnya.

$("#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;
    });
Peter Mortensen
sumber
2
$.parseJSON()adalah penyelamat total, terima kasih. Saya mengalami kesulitan menafsirkan output saya berdasarkan jawaban yang lain.
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>

JavaScript :

   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);
   }
DDeme
sumber
18

Saya menggunakan cara yang ditunjukkan di bawah ini. Ini mengirimkan semuanya seperti file.

$(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");
        }
    });
});
Islam Shaiful
sumber
14

Jika Anda ingin mengirim data menggunakan jQuery Ajax maka tidak perlu tag formulir dan tombol kirim

Contoh:

<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" />
Junari Ansari
sumber
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>
john
sumber
apa perbedaan id antara jawaban Anda dan lainnya?
NullPoiиteя
11
itu diposting oleh saya orang lain oleh orang lain ,.
john
6

Menangani kesalahan dan pemuat Ajax sebelum mengirim dan setelah mengirim berhasil memperlihatkan kotak boot peringatan dengan contoh:

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);
            }
        }
    }
});
pawan sen
sumber
5

Saya menggunakan kode satu baris sederhana ini selama bertahun-tahun tanpa masalah (memerlukan 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>

Di sini ap () berarti halaman Ajax dan af () berarti bentuk Ajax. Dalam formulir, cukup memanggil fungsi af () akan memposting formulir ke URL dan memuat respons pada elemen HTML yang diinginkan.

<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>
Uchiha Itachi
sumber
Saya harap Anda memasukkan file server! Tidak tahu cara menguji.
Johnny mengapa
4

Dalam file php Anda, masukkan:

$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";

dan di file js Anda mengirim ajax dengan objek data

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);
    }
  })

atau simpan apa adanya dengan formulir-kirim. Anda hanya memerlukan ini, jika Anda ingin mengirim permintaan yang dimodifikasi dengan konten tambahan yang dihitung dan tidak hanya beberapa data formulir, yang dimasukkan oleh klien. Misalnya hash, timestamp, userid, sessionid, dan sejenisnya.

HA
sumber
2

Silakan periksa ini. Ini adalah kode permintaan Ajax lengkap.

$('#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();
});
Waseem Bashir
sumber
Ini yang saya cari.
Nirav Bhoi
2

Ini adalah artikel yang sangat bagus yang berisi semua yang perlu Anda ketahui tentang pengiriman formulir jQuery.

Ringkasan artikel:

Form HTML Sederhana Kirim

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>

JavaScript:

$("#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 Multipart / form-data Form Kirim

Untuk mengunggah file ke server, kita bisa menggunakan antarmuka FormData yang tersedia untuk XMLHttpRequest2, yang membangun objek FormData dan dapat dikirim ke server dengan mudah menggunakan 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>

JavaScript:

$("#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);
    });
});

Saya harap ini membantu.

Supun Praneeth
sumber
2

Sejak diperkenalkannya API Ambil, sebenarnya tidak ada alasan lagi untuk melakukan ini dengan jQuery Ajax atau XMLHttpRequests. Untuk POST form data ke skrip PHP dalam vanilla JavaScript Anda dapat melakukan hal berikut:

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>

Berikut ini adalah contoh yang sangat mendasar dari skrip PHP yang mengambil data dan mengirim email:

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

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

    $to = "[email protected]";
    $subject = "New name submitted";
    $body = "You received the following name: $name";

    mail($to, $subject, $body);
kesendirian
sumber
Dukungan internet explorer bisa menjadi alasan untuk tetap menggunakan jQuery AJAX
Huub S
@ HuuS Mengapa? Cukup gunakan polyfill. jQuery sudah mati IMHO.
leonheess