Cum pentru a trece parametrii în $ajax POST?

Am urmat tutorialul, după cum se menționează în acest link-ul. În codul de mai jos pentru un motiv oarecare de date nu este adăugat la url-ul ca parametri, dar dacă le-am pus direct la url-ul folosind /?field1="buna ziua" funcționează.

$.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");
        }
    }); 
Comentarii la întrebare (1)
Soluția

Mi-ar recomanda pentru a face uz de $.post sau $.obține sintaxa jQuery pentru cazuri simple:

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

Dacă aveți nevoie pentru a prinde eșua cazuri, doar a face acest lucru:

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

De asemenea, dacă vă trimite întotdeauna un șir JSON, puteți utiliza $.getJSON sau $.post cu un singur parametru la sfârșitul foarte.

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

Încercați să utilizați metoda 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
});

Nu se pot vedea parametrii in URL-ul cu metoda POST.

Edit:

Dezaprobare Observa: La jqXHR.succesul(), jqXHR.eroare(), și jqXHR.completați() callback sunt eliminate ca de jQuery 3.0. Puteți utiliza jqXHR.făcut(), jqXHR.fail(), și jqXHR.întotdeauna() în loc.

Comentarii (0)

Jquery.ajax nu codifică datele POST pentru tine în mod automat modul în care aceasta nu pentru a OBȚINE date. Jquery se așteaptă ca datele dumneavoastră să fie pre-formatate pentru a adăuga la cererea organismului de a fi trimis direct pe fir.

O soluție este de a utiliza [jQuery.param](http://api.jquery.com/jquery.param/ funcție) pentru a construi un șir de interogare care cele mai multe script-uri care procesează cererile de POST aștepta.

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

În acest caz param metoda formate de date pentru:

field1=hello&field2=hello2

De Jquery.ajax documentația spune că există un pavilion numit processData care controlează dacă această codificare se face în mod automat sau nu. Documentația spune că implicit este "adevărat", dar asta nu este comportament l-am observat când "POST" este folosit.

Comentarii (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");
        }
    });   
}
Comentarii (0)

Într-o cerere POST, parametrii sunt trimise în corpul de cerere, care's de ce nu't le vedea în URL-ul.

Dacă vrei să le vezi, schimba

    type: 'POST',

pentru a

    type: 'GET',

Rețineți că browsere au instrumente de dezvoltare care vă permite să vizualizați complet solicită ca probleme de cod. În Chrome, l's în "de Rețea" panou.

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

tip: 'POST'`, va adăuga parametri la corpul de cerere care este nu am vazut in URL în timp ce tipul: 'IA'`, adaugă parametri la URL-ul care este vizibile.

Cele mai populare browsere web conține rețea de panouri care afișează cerere completă.

În rețea de pe panoul select XHR pentru a vedea cereri.

Acest lucru poate fi, de asemenea, face prin aceasta.

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

O poti face cu ajutorul $.ajax sau $.post

Folosind $.ajax :

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

Folosind $.post :

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

Codul a fost chiar în afară de tine nu trece JSON chei ca siruri de caractere.

Acesta ar trebui să aibă ghilimele duble sau single în jurul valorii de ea

{ "field1": "buna ziua", "domeniu2" : "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");
      }
   }
);
Comentarii (0)

Pentru a trimite parametrii din url-ul în "POST" metodă puteți pur și simplu adăugați-l la url-ul astfel:

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