Bagaimana untuk melewati parameter di $ajax POST?

Saya telah mengikuti tutorial seperti yang dinyatakan dalam ini link. Dalam kode di bawah ini untuk beberapa alasan data tidak ditambahkan ke url sebagai parameter, tapi jika saya mengatur mereka langsung ke url menggunakan /?field1="hello" ia bekerja.

$.ajax({
        url: 'superman',
        type: 'POST',
        data: { field1: "hello", field2 : "hello2"} ,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            alert(response.status);
        },
        error: function () {
            alert("error");
        }
    }); 
Mengomentari pertanyaan (1)
Larutan

Saya akan merekomendasikan anda untuk menggunakan $.posting atau $.dapatkan sintaks jQuery untuk kasus sederhana:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
});

Jika anda perlu untuk menangkap gagal kasus, hanya melakukan ini:

$.post('superman', { field1: "hello", field2 : "hello2"}, 
    function(returnedData){
         console.log(returnedData);
}).fail(function(){
      console.log("error");
});

Selain itu, jika anda selalu mengirim string JSON, anda dapat menggunakan $.getJSON atau $.posting dengan satu parameter di bagian akhir.

$.post('superman', { field1: "hello", field2 : "hello2"}, 
     function(returnedData){
        console.log(returnedData);
}, 'json');
Komentar (3)

Cobalah menggunakan metode GET,

var request = $.ajax({
    url: 'url',
    type: 'GET',
    data: { field1: "hello", field2 : "hello2"} ,
    contentType: 'application/json; charset=utf-8'
});

request.done(function(data) {
      // your success code here
});

request.fail(function(jqXHR, textStatus) {
      // your failure code here
});

Anda tidak bisa melihat parameter di URL dengan metode POST.

Edit:

Bantahan Pemberitahuan: The jqXHR.sukses(), jqXHR.kesalahan(), dan jqXHR.lengkap() callback dihapus sebagai jQuery 3.0. Anda dapat menggunakan jqXHR.dilakukan(), jqXHR.gagal(), dan jqXHR.selalu() sebagai gantinya.

Komentar (0)

Jquery.ajax tidak menyandikan data POST untuk anda secara otomatis cara yang dilakukannya untuk MENDAPATKAN data. Jquery mengharapkan data anda untuk menjadi pra-format untuk menambahkan untuk permintaan tubuh untuk dikirim langsung di kawat.

Solusinya adalah dengan menggunakan jQuery.param berfungsi untuk membangun sebuah query string yang paling script bahwa proses permintaan PASCA harapkan.

$.ajax({
    url: 'superman',
    type: 'POST',
    data: jQuery.param({ field1: "hello", field2 : "hello2"}) ,
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    success: function (response) {
        alert(response.status);
    },
    error: function () {
        alert("error");
    }
}); 

Dalam hal ini param metode format data untuk:

field1=hello&field2=hello2

The Jquery.ajax dokumentasi mengatakan bahwa ada bendera yang disebut processData yang mengontrol apakah pengkodean ini dilakukan secara otomatis atau tidak. Dokumentasi mengatakan bahwa standarnya adalah benar, tapi itu bukan perilaku yang saya amati ketika POST yang digunakan.

Komentar (1)
    function FillData() {
    var param = $("#").val();
    $("#tbDetails").append("");
    $.ajax({
        type: "POST",/*method type*/
        contentType: "application/json; charset=utf-8",
        url: "Default.aspx/BindDatatable",/*Target function that will be return result*/
        data: '{"data":"' + param + '"}',/*parameter pass data is parameter name param is value */
        dataType: "json",
        success: function(data) {
               alert("Success");
            }
        },
        error: function(result) {
            alert("Error");
        }
    });   
}
Komentar (0)

Dalam request POST, parameter yang dikirim dalam tubuh permintaan, yang's mengapa anda don't melihat mereka dalam URL.

Jika anda ingin melihat mereka, mengubah

    type: 'POST',

untuk

    type: 'GET',

Perhatikan bahwa browser memiliki alat-alat pengembangan yang memungkinkan anda untuk melihat lengkap permintaan yang anda masalah kode. Di Chrome,'s di "Jaringan" panel.

Komentar (0)
$.ajax(
   {
      type: 'post',
      url: 'superman',
      data: { 
        "field1": "hello",
        "field2": "hello1"
      },
      success: function (response) {
        alert("Success !!");
      },
      error: function () {
        alert("Error !!");
      }
   }
);

jenis: 'POST', akan append parameter untuk tubuh permintaan yang tidak terlihat di URL sementara jenis: 'MENDAPATKAN', menambahkan parameter ke URL yang terlihat.

Yang paling populer web browser mengandung jaringan panel yang menampilkan lengkapi permintaan.

Dalam jaringan panel pilih XHR untuk melihat permintaan.

Hal ini juga dapat dilakukan melalui ini.

$.post('superman',
      { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      function (response) {
        alert("Success !");
      }
    );
Komentar (0)

Anda dapat melakukannya dengan menggunakan $.ajax atau $.post

Menggunakan $.ajax :

    $.ajax({
      type: 'post',
      url: 'superman',
      data: { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      success: function (response) {
        alert(response.status);
      },
      error: function () {
        alert("error");
      }
   });

Menggunakan $.posting :

    $.post('superman',
      { 
        'field1': 'hello', 
        'field2': 'hello1'
      },
      function (response, status) {
        alert(response.status);
      }
    );
Komentar (1)

Kode anda benar kecuali anda tidak melewati JSON kunci sebagai string.

Ini harus memiliki tanda kutip ganda atau tunggal sekitarnya

{ "field1": "hello", "field2" : "hello2"}

$.ajax(
   {
      type: 'post',
      url: 'superman',
      data: { 
        "field1": "hello", // Quotes were missing
        "field2": "hello1" // Here also
      },
      success: function (response) {
        alert(response);
      },
      error: function () {
        alert("error");
      }
   }
);
Komentar (0)

Untuk mengirim parameter di url di POSTING metode Anda hanya dapat menambahkan ke url seperti ini:

$.ajax({
    type: 'POST',
    url: 'superman?' + jQuery.param({ f1: "hello1", f2 : "hello2"}),
    // ...
}); 
Komentar (1)