jQuery ajax - post() metode

Eksempel

Anmod om test.php-side, ignorér tilbageværdien:

$.post("test.php");

TIY eksempel

Ændr teksten i div-elementet gennem AJAX POST-anmodning:

$("input").keyup(function(){
  txt=$("input").val();
  $.post("demo_ajax_gethint.asp",{suggest:txt},function(result){
    $("span").html(result);
  });
});

Prøv det selv

Definition og brug

post() metoden indlæser data fra serveren via HTTP POST-anmodning.

Syntaks

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
Parametre Beskrivelse
url Obligatorisk. Definerer, hvilken URL forespørgslen sendes til.
data Valgfri. Mappings- eller strengværdi. Definerer data, der sendes sammen med forespørgslen til serveren.
success(data, textStatus, jqXHR) Valgfri. Kaldsfunktion, der udføres, når forespørgslen lykkes.
dataType

Valgfri. Definerer den forventede data-type fra serveren.

Standardudførelse af intelligent bedømmelse (xml, json, script eller html).

Detaljeret beskrivelse

Denne funktion er en forkortelse af Ajax-funktionen, og er lig med:

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

Afhængigt af de forskellige MIME-typer i svaret, varierer de data, der sendes til success-kaldsfunktionen, og disse data kan være XML-roden, en tekststreng, en JavaScript-fil eller et JSON-objekt. Man kan også sende den tekstlige status af svaret til success-kaldsfunktionen.

For jQuery 1.5 kan man også sende til success-kaldsfunktionen: jqXHR-objektet(jQuery 1.4 sender XMLHttpRequest-objektet).

De fleste implementeringer definerer en success-funktion:

$.post("ajax/test.html", function(data) {
  $(".result").html(data);
});

Dette eksempel læser det ønskede HTML-fragment og indsætter det i siden.

Sider læst med POST bliver ikke cached, således jQuery.ajaxSetup() cache- og ifModified-tilvalgene påvirker ikke disse forespørgsler.

Bemærk:På grund af browseres sikkerhedsbegrænsninger følger de fleste "Ajax"-forespørgsler samme kildestrategi; forespørgsler kan ikke succesfuldt hente data fra forskellige domæner, underdomæner eller protokoller.

Bemærk:Hvis forespørgslen udløst af jQuery.post() returnerer en fejlkode, vil der ikke være nogen advarsel, medmindre scriptet allerede har kaldt den globale .ajaxError() metoden.error() metoden kan også bruges til fejlhåndtering for jqXHR-objektet, der returneres af jQuery.post() for jQuery 1.5.

jqXHR-objektet

For jQuery 1.5 returnerer alle jQuery's AJAX-metoder en superklasse af XMLHTTPRequest-objekter. Det jQuery XHR-objekt, der returneres af $.post(), eller "jqXHR," implementerer konventionelle grænseflader, der giver det alle egenskaber, metoder og konventionelle adfærd. $.ajax() Overvejelser om nemhed og konsistens af navne på tilbagekaldelsesfunktioner, det tilbyder .error(), .success() og .complete() metoder. Disse metoder bruger funktionen, der kaldes ved afslutningen af forespørgslen, som modtager de samme parametre som de korresponderende $.ajax() tilbagekaldelsesfunktioner.

jQuery 1.5's konventionelle grænseflader tillader også jQuery's Ajax-metoder, herunder $.post(), til at kæde flere .success(), .complete() og .error() tilbagekaldelsesfunktioner sammen, og endda kan disse tilbagekaldelsesfunktioner blive tildelt, hvis forespørgslen måske allerede er afsluttet.

// Foreslået efter behandling af forespørgsel, husk denne forespørgsel for jqxhr-objektet
    var jqxhr = $.post("example.php", function() {
      alert("success");
    })
    .success(function() { alert("second success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });
    // Udfør andre opgaver her
    // Indstil en anden færdigfunktion til ovenstående anmodning
    jqxhr.complete(function(){ alert("second complete"); });

Flere eksempler

Eksempel 1

Anmod om test.php-side og send nogle ekstra data sammen (returværdien ignoreres stadig):

$.post("test.php", { name: "Bill", time: "2pm" } );

Eksempel 2

Send dataarray til serveren (samtidig ignoreres returværdien):

$.post("test.php", { 'choices[]': ["Jon", "Susan"] });

Eksempel 3

Send formdata ved hjælp af AJAX-anmodning:

$.post("test.php", $("#testform").serialize());

Eksempel 4

Output resultatet fra forespørgselsside test.php (HTML eller XML afhænger af det returnerede indhold):

$.post("test.php", function(data){
   alert("Data Loaded: " + data);
 });

Eksempel 5

Send data til side test.php og output resultatet (HTML eller XML afhænger af det returnerede indhold):

$.post("test.php", { name: "Bill", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

Eksempel 6

Få indholdet fra test.php-side og gem det som en XMLHttpResponse-objekt, og behandle det ved hjælp af JavaScript-funktionen process():

$.post("test.php", { name: "Bill", time: "2pm" },
   function(data){
     process(data);
   }, "xml");

Eksempel 7

Få indholdet i json-format, som returneres af test.php-side:

$.post("test.php", { "func": "getNameAndTime" },
   function(data){
     alert(data.name); // Bill
     console.log(data.time); //  2pm
   }, "json");