Kode berikut memicu GET, bukan permintaan HTTP POST.
function AddToDatabase() {
this.url = './api/add';
}
AddToDatabase.prototype.postData = function(dataToPost) {
$.ajax({
type: "POST",
url: this.url,
data: dataToPost,
context: this,
success: this.onSuccess
});
};
var AddToDatabase = new AddToDatabase();
data = {data: 'coucou'};
AddToDatabase.postData(data);
Mengapa, dan bagaimana saya bisa mendapatkan POST?
Saya melihat di Google Chrome Inspect dan Firefox Inspect bahwa browser mengirimkan GET. Ini dari Chrome:
URL Permintaan: http: // localhost / SAMPLE-CODES / UPDATE% 20MYSQL / api / add / Request Metode: GET Kode Status: 200 OK
TERPECAHKAN
URL bernama './api/add' sebenarnya memposting ke './api/add/index.php'. Ternyata panggilan './api/add /index.php
' atau './api/add /
' memberi saya permintaan POST.
Itu hanya URL yang salah, tetapi untuk beberapa alasan saya berhasil mendapatkan permintaan GET ke '.api / add /'.
Jawaban:
Beberapa masalah di MVC. Untuk beberapa alasan ketika saya menghapus [HttPost] itu berfungsi seperti yang diharapkan, meskipun saya memberi tahu ajax untuk menggunakan POST.
Sekarang POST
Tetapi setelah menggali dokumentasi saya menemukan ini.
sumber
{ method : "POST", type: "POST" }
Saya mengalami masalah ini dan menurut saran @ FAngle, itu karena .htaccess saya menghapus garis miring yang tertinggal - dan saya telah menyetel url ke
/ajax/foo/bar/
dan tidak/ajax/foo/bar
. Pengalihan mengubah permintaan dari POST menjadi GET. Hapus / dan masalah terpecahkan!sumber
URL
'./api/add'
sebenarnya dialihkan ke'./api/add/index.php'
. Oleh karena itu, efek samping yang aneh ini yang permintaan baru setelah pengalihan dikirim menggunakan,GET
bukanPOST
Larutan
'./api/add/index.php'
'./api/add/'
.sumber
Saya memperhatikan perilaku ini juga di mana POST saya mengirimkan GET. Skenarionya cukup unik, tapi mungkin itu akan membantu seseorang.
Ini terjadi pada saya di halaman edit Peran Pengguna saya, di mana saya menggunakan ajax (posting) sebagai tindakan langsung ketika peran dicentang atau tidak dicentang.
Saya juga memiliki server yang dikonfigurasi untuk mengautentikasi ulang pengguna (dan mengarahkan mereka) setiap kali informasi peran mereka berubah sehingga klaim mereka akan diperbarui.
Siklus brutal berakhir sebagai:
Pembaruan Peran Pertama - POST - 200 sukses
Pembaruan Peran Berikutnya - POST - 302 Ditemukan -> Alihkan (Saya tidak memperhatikan ini sampai saya menggunakan Fiddler daripada monitor jaringan Chrome)
Alihkan Panggilan dari (2) (URL Sama) - GET - 404 Tidak Ditemukan (karena saya hanya mengizinkan Posting)
BUKA (1)
Saya akhirnya mengubah server untuk melewati pembaruan otentikasi / klaim ketika mendeteksi permintaan ajax (berdasarkan Jenis Terima).
sumber
Saya menemukan bahwa ketika menggunakannya
dataType: 'jsonp'
mengubah permintaan menjadiGET
. Saya mengubahnya menjadidataType: 'json'
berubah dariGET
menjadiPOST
.sumber
Saya memiliki masalah serupa dan itu mulai bekerja untuk saya segera setelah saya menghapus hardcode
https://
dari url saya.jQuery.ajax({ type: "POST", url: "www.someurl.com",//instead of "https://www.someurl.com" data: { foo:"bar"}, success: function(d){ console.log(d); }, dataType: "JSONP" });
sumber
Bagi saya, potongan kode Anda terlihat oke, tetapi jika Anda ingin memastikan, Anda bisa menggunakan $ .post daripada $ .ajax
$.post('ajax/test.html', function(data) { $('.result').html(data); });
tautan jquery: http://api.jquery.com/jQuery.post/
sumber
post
hanyalah metode singkatan untuk $ .ajax ({type: 'POST'})Periksa file .htaccess Anda atau cari beberapa hal lain yang dapat mengarahkan permintaan Anda
sumber
Saya memiliki masalah yang sama dan menemukan pertanyaan ini tetapi jawaban tidak menyelesaikan masalah saya. Saya akhirnya menyelesaikannya dengan menghapus
contentType
bidang dalam permintaan ajax.contentType: "application/json",
sumber
Saya mengalami masalah ini, dan ternyata itu adalah modul Penulisan Ulang URL di IIS.
Saya menggunakan ASP.NET MVC dan WebAPI. Saya membuat aturan untuk memaksa URL huruf kecil sehingga jejaring sosial tidak melihat URL yang sama sebagai dua halaman berbeda.
Sebagai contoh:
" http://url.com/View/Something/123GuidIdSomething "
vs.
" http://url.com/view/something/123guididsomething "
Namun, ini entah bagaimana mengacaukan permintaan ajax saya. Saya menonaktifkan aturan dan masalah telah teratasi.
sumber
kesalahan yang sangat umum adalah kami menggunakan jenis tombol sebagai submit dan tidak mengubah metode untuk formulir (yang didapat secara default)
pastikan Anda tidak menggunakan tombol jenis kirim dan jika Anda melakukannya Anda telah mengubah metode formulir untuk mengirim
sumber