Perbedaan antara $ .ajax () dan $ .get () dan $ .load ()

Jawaban:

241

$.ajax()adalah yang paling dapat dikonfigurasi, di mana Anda mendapatkan kontrol berbutir halus atas header HTTP dan semacamnya. Anda juga bisa mendapatkan akses langsung ke objek-XHR menggunakan metode ini. Penanganan kesalahan yang sedikit lebih halus juga disediakan. Karena itu bisa lebih rumit dan sering tidak perlu, tetapi terkadang sangat berguna. Anda harus berurusan dengan data yang dikembalikan sendiri dengan panggilan balik.

$.get()hanyalah singkatan untuk $.ajax()tetapi mengabstraksi beberapa konfigurasi, menetapkan nilai default yang wajar untuk apa yang disembunyikannya dari Anda. Mengembalikan data ke panggilan balik. Ini hanya memungkinkan GET-permintaan sehingga disertai dengan $.post()fungsi untuk abstraksi yang sama, hanya untuk POST

.load()mirip dengan $.get()tetapi menambahkan fungsionalitas yang memungkinkan Anda untuk menentukan di mana dalam dokumen data yang dikembalikan akan dimasukkan. Karena itu benar-benar hanya dapat digunakan ketika panggilan hanya akan menghasilkan HTML. Ini disebut sedikit berbeda dari yang lain, global, panggilan, karena merupakan metode yang terkait dengan elemen DOM jQuery-terbungkus tertentu. Karena itu, orang akan melakukan:$('#divWantingContent').load(...)

Perlu dicatat bahwa semua $.get(), $.post(), .load()semua hanya pembungkus untuk $.ajax()seperti disebut internal.

Lebih detail dalam dokumentasi Ajax-jQuery: http://api.jquery.com/category/ajax/

Alexander Sagen
sumber
3
@UzairAli tidak, itu benar-benar mengambil variabel yang Anda lewati dan menggunakannya untuk mengeksekusi jQuery.ajax ()
lisburnite
1
Hebat, .load () hanya HTML biasa dan .get () berguna untuk lebih banyak hal.
Luigi Lopez
30

Metode ini memberikan lapisan abstraksi yang berbeda.

  • $.ajax()memberi Anda kontrol penuh atas permintaan Ajax. Anda harus menggunakannya jika metode lain tidak memenuhi kebutuhan Anda.

  • $.get()mengeksekusi GETpermintaan Ajax . Data yang dikembalikan (yang bisa berupa data apa saja) akan diteruskan ke penangan panggilan balik Anda.

  • $(selector).load()akan menjalankan GETpermintaan Ajax dan akan mengatur konten dari data yang dikembalikan yang dipilih (yang harus berupa teks atau HTML).

Itu tergantung pada situasi metode mana yang harus Anda gunakan. Jika Anda ingin melakukan hal-hal sederhana, tidak perlu repot $.ajax().

Misalnya Anda tidak akan menggunakan $.load(), jika data yang dikembalikan akan menjadi JSON yang perlu diproses lebih lanjut. Di sini Anda akan menggunakan $.ajax()atau $.get().

Felix Kling
sumber
9

http://api.jquery.com/jQuery.ajax/

jQuery.ajax()

Deskripsi: Melakukan permintaan HTTP asinkron (Ajax).

Monty penuh, memungkinkan Anda membuat segala jenis permintaan Ajax.


http://api.jquery.com/jQuery.get/

jQuery.get()

Deskripsi: Memuat data dari server menggunakan permintaan HTTP GET.

Hanya memungkinkan Anda membuat permintaan GET HTTP, membutuhkan konfigurasi yang sedikit kurang.


http://api.jquery.com/load/

.load()

Deskripsi: Memuat data dari server dan menempatkan HTML yang dikembalikan ke elemen yang cocok.

Khusus untuk mendapatkan data dan menyuntikkannya ke dalam elemen.

tipuan
sumber
8

Tapi sangat mendasar

  • $.load(): Muat sepotong html ke DOM wadah.
  • $.get(): Gunakan ini jika Anda ingin melakukan panggilan GET dan bermain secara luas dengan jawabannya.
  • $.post(): Gunakan ini jika Anda ingin melakukan panggilan POST dan tidak ingin memuat respons ke beberapa DOM kontainer.
  • $.ajax(): Gunakan ini jika Anda perlu melakukan sesuatu ketika XHR gagal, atau Anda perlu menentukan opsi ajax (mis. Cache: true) on the fly.
Tim
sumber
5

Catatan penting: metode jQuery.load () tidak hanya dapat DAPATKAN tetapi juga permintaan POST , jika parameter data diberikan (lihat: http://api.jquery.com/load/ )

tipe data : PlainObject atau String Objek polos atau string yang dikirim ke server dengan permintaan.

Metode Permintaan Metode POST digunakan jika data disediakan sebagai objek; jika tidak, GET diasumsikan.

Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
pymen
sumber
3

Setiap orang benar. Fungsi .load,, .getdan .post, adalah berbagai cara penggunaan fungsi .ajax.

Secara pribadi, saya menemukan fungsi mentah .ajax sangat membingungkan, dan lebih suka menggunakan memuat, mendapatkan, atau memposting sesuai kebutuhan saya.

POST memiliki struktur berikut:

$.post(target, post_data, function(response) { });

GET memiliki yang berikut:

$.get(target, post_data, function(response) { });

LOAD memiliki yang berikut:

$(*selector*).load(target, post_data, function(response) { });

Seperti yang Anda lihat, ada sedikit perbedaan di antara mereka, karena ini adalah situasi yang menentukan mana yang akan digunakan. Perlu mengirim info ke file secara internal? Gunakan .post (ini akan menjadi sebagian besar kasus). Perlu mengirim info sedemikian rupa sehingga Anda dapat memberikan tautan ke momen tertentu? Gunakan .get. Keduanya memungkinkan panggilan balik di mana Anda dapat menangani respons file.

Catatan penting adalah bahwa .load bertindak dalam dua cara yang berbeda. Jika Anda hanya menyediakan url dokumen target, itu akan bertindak sebagai get (dan saya katakan bertindak karena saya diuji memeriksa $_POSTdalam PHP yang disebut saat menggunakan perilaku .load default dan mendeteksi $_POST, tidak $_GET; mungkin akan lebih tepat untuk katakan itu bertindak sebagai .post tanpa argumen); namun, seperti http://api.jquery.com/load/mengatakan, setelah Anda memberikan array argumen ke fungsi, itu akan mengirim informasi ke file. Apa pun kasusnya, fungsi .load akan langsung memasukkan informasi ke dalam elemen DOM, yang dalam BANYAK kasus sangat terbaca, dan sangat langsung; tetapi tetap memberikan panggilan balik jika Anda ingin melakukan sesuatu yang lebih dengan responsnya. Selain itu, .load memungkinkan Anda untuk mengekstrak blok kode tertentu dari file, memberi Anda kemungkinan untuk menyimpan katalog, misalnya, dalam file html, dan mengambil potongan-potongan (item) langsung ke elemen DOM.

Isaac Levi Felix Salinas
sumber
1

Keduanya digunakan untuk mengirim beberapa data dan menerima respons menggunakan data itu.

DAPATKAN : Dapatkan informasi yang tersimpan di server. (yaitu pencarian, tweet, informasi orang). Jika Anda ingin mengirim informasi maka dapatkan permintaan kirim permintaan menggunakan process.php?name=subrotoJadi pada dasarnya mengirim informasi melalui url. Url tidak dapat menangani lebih dari 2036 karakter. Jadi untuk posting blog dapatkah Anda mengingatnya tidak mungkin?

POST : Post melakukan hal yang sama dengan GET. Registrasi pengguna, login pengguna, pengiriman data besar, posting blog. Jika Anda perlu mengirim informasi aman maka gunakan pos atau untuk data besar karena tidak melalui url.

AJAX : $.get()dan $.post()berisi fitur yang merupakan himpunan bagian dari $.ajax(). Ini memiliki lebih banyak konfigurasi.

$.get ()metode, yang merupakan semacam singkatan untuk $.ajax(). Saat menggunakan $.get (), alih-alih mengirimkan objek, Anda mengirimkan argumen. Minimal, Anda memerlukan dua argumen pertama, yaitu URL file yang ingin Anda ambil (mis. Test.txt) dan panggilan balik yang berhasil.

Subroto Biswas
sumber
0

Semua orang menjelaskan topik itu dengan sangat baik. Ada satu hal lagi yang ingin saya tambahkan tentang metode .load ().

Sesuai Muat dokumen jika Anda menambahkan pemilih suffixed di url data maka tidak akan menjalankan skrip dalam memuat konten.

Plunker yang bekerja

            $(document).ready(function(){
                $("#secondPage").load("mySecondHtmlPage.html #content");
            })

Di sisi lain, setelah menghapus pemilih di url, skrip dalam konten baru akan berjalan. Coba contoh ini

setelah menghapus #content di url dalam file index.html

            $(document).ready(function(){
                $("#secondPage").load("mySecondHtmlPage.html");
            })

Tidak ada fitur bawaan yang disediakan oleh metode lain dalam diskusi.

Deepak Kumar
sumber