Bagaimana cara membuat panggilan AJAX menggunakan JavaScript, tanpa menggunakan jQuery?
javascript
ajax
diskky
sumber
sumber
Jawaban:
Dengan JavaScript "vanilla":
Dengan jQuery:
sumber
Dengan menggunakan cuplikan berikut ini, Anda dapat melakukan hal serupa dengan cukup mudah, seperti ini:
Berikut cuplikannya:
sumber
return x.responseText;
- dan kemudian mengembalikan masing-masingajax.send
panggilan.ajax.get('/test.php', {foo: 'bar'}, function(responseText) { alert(responseText); });
query.join('&').replace(/%20/g, '+')
?Saya tahu ini adalah pertanyaan yang cukup lama, tetapi sekarang ada API yang lebih bagus tersedia secara native di browser yang lebih baru . The
fetch()
Metode memungkinkan Anda untuk membuat permintaan web. Misalnya, untuk meminta beberapa json dari/get-data
:Lihat di sini untuk detail lebih lanjut.
sumber
<script src="https://cdn.rawgit.com/github/fetch/master/fetch.js"></script>
dan gunakan ambil seperti juara.Anda dapat menggunakan fungsi berikut:
Anda dapat mencoba solusi serupa online di tautan ini:
sumber
GET
, jadi Anda bisa menambahkannya ke permintaan, tetapi untuk lebih umum, saya bersama Anda, saya benar-benar berpikir untuk memperbarui jawaban untuk menerima parameter permintaan sebagai parameter untuk fungsi di sini , & juga untuk lulus metode (GET
atauPOST
), tetapi yang menghentikan saya adalah bahwa saya ingin menyimpan jawabannya di sini sesederhana mungkin bagi orang-orang untuk mencobanya secepat mungkin. Sebenarnya, saya benci beberapa jawaban lain karena terlalu lama karena mereka berusaha untuk menjadi sempurna :)Bagaimana dengan versi ini di ES6 / ES2015 ?
Fungsi mengembalikan janji . Berikut adalah contoh tentang cara menggunakan fungsi dan menangani janji yang dikembalikan:
Jika Anda perlu memuat file json, Anda dapat menggunakan
JSON.parse()
untuk mengubah data yang dimuat menjadi Obyek JS.Anda juga dapat mengintegrasikan
req.responseType='json'
ke dalam fungsi tetapi sayangnya tidak ada dukungan IE untuk itu , jadi saya akan tetap menggunakannyaJSON.parse()
.sumber
XMLHttpRequest
Anda membuat upaya asinkron untuk memuat file. Itu berarti eksekusi kode Anda akan berlangsung, sementara file Anda dimuat di latar belakang. Untuk menggunakan konten file dalam skrip Anda, Anda memerlukan mekanisme yang memberitahu skrip Anda ketika file selesai dimuat atau gagal memuat. Di situlah janji berguna. Ada cara lain untuk menyelesaikan masalah ini, tapi saya pikir janji - janji itu paling nyaman.sumber
Gunakan XMLHttpRequest .
Permintaan GET sederhana
Permintaan POST sederhana
Kita dapat menentukan bahwa permintaan harus asinkron (benar), default, atau sinkron (salah) dengan argumen ketiga opsional.
Kita dapat mengatur tajuk sebelum menelepon
httpRequest.send()
Kami dapat menangani respons dengan mengatur
httpRequest.onreadystatechange
ke suatu fungsi sebelum memanggilhttpRequest.send()
sumber
Anda bisa mendapatkan objek yang benar sesuai dengan browser
Dengan objek yang benar, GET dapat diabstraksi menjadi:
Dan POST ke:
sumber
Saya mencari cara untuk memasukkan janji dengan ajax dan mengecualikan jQuery. Ada sebuah artikel di HTML5 Rocks yang berbicara tentang janji ES6. (Anda dapat melakukan polyfill dengan perpustakaan janji seperti Q ) Anda dapat menggunakan potongan kode yang saya salin dari artikel.
Catatan: Saya juga menulis artikel tentang ini .
sumber
Kombinasi kecil dari beberapa contoh di bawah ini dan membuat karya sederhana ini:
ATAU jika parameter Anda objek (s) - penyesuaian kode tambahan kecil:
Keduanya harus sepenuhnya kompatibel dengan browser + versi.
sumber
Jika Anda tidak ingin memasukkan JQuery, saya akan mencoba beberapa pustaka AJAX yang ringan.
Favorit saya adalah reqwest. Ini hanya 3.4kb dan dibangun dengan sangat baik: https://github.com/ded/Reqwest
Berikut ini contoh permintaan GET dengan reqwest:
Sekarang jika Anda menginginkan sesuatu yang lebih ringan, saya akan mencoba microAjax hanya dengan 0,4 kb: https://code.google.com/p/microajax/
Ini semua kode di sini:
Dan inilah contoh panggilan:
sumber
Tua tapi saya akan coba, mungkin seseorang akan menemukan info ini berguna.
Ini adalah jumlah minimal kode yang perlu Anda lakukan
GET
permintaan dan mengambil beberapaJSON
data yang diformat. Ini hanya berlaku untuk browser modern seperti versi terbaru dari Chrome , FF , Safari , Opera dan Microsoft Edge .Juga periksa Ambil API baru yang merupakan pengganti berbasis janji untuk API XMLHttpRequest .
sumber
XMLHttpRequest ()
Anda dapat menggunakan
XMLHttpRequest()
konstruktor untuk membuat objek baruXMLHttpRequest
(XHR) yang akan memungkinkan Anda untuk berinteraksi dengan server menggunakan metode permintaan HTTP standar (sepertiGET
danPOST
):mengambil()
Anda juga dapat menggunakan
fetch()
metode ini untuk mendapatkanPromise
yang menyelesaikan keResponse
objek yang mewakili respons terhadap permintaan Anda:navigator.sendBeacon ()
Di sisi lain, jika Anda hanya berusaha untuk
POST
data dan tidak memerlukan respons dari server, solusi terpendek adalah menggunakannavigator.sendBeacon()
:sumber
Dari youMightNotNeedJquery.com +
JSON.stringify
sumber
Ini dapat membantu:
sumber
sumber
Saya harap ini membantu
Step 1.
Simpan referensi ke objek XMLHttpRequestStep 2.
Ambil objek XMLHttpRequestStep 3.
Buat permintaan HTTP asinkron menggunakan objek XMLHttpRequestStep 4.
Dilakukan secara otomatis ketika pesan diterima dari serversumber
di JavaScript polos di browser:
Atau jika Anda ingin menggunakan Browserify untuk menggabungkan modul-modul Anda menggunakan node.js. Anda dapat menggunakan superagent :
sumber
Inilah JSFiffle tanpa JQuery
http://jsfiddle.net/rimian/jurwre07/
sumber
panggilan ajax saya
untuk membatalkan permintaan sebelumnya
sumber
HTML:
PHP:
sumber
Solusi yang sangat bagus dengan javascript murni ada di sini
sumber