jQuery: Datu atgriešana pēc ajax izsaukuma panākumiem

Man ir kaut kas līdzīgs šim, kur tas ir vienkāršs zvans uz skriptu, kas man dod atpakaļ vērtību, virkni..

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {
         return data; 
      }
   });
}

bet, ja es izsauktu kaut ko tādu

var output = testAjax(svar);  // output will be undefined...

tad kā es varu atgriezt vērtību? zemāk redzamais kods arī nedarbojas...

function testAjax() {
    $.ajax({
      url: "getvalue.php",  
      success: function(data) {

      }
   });
   return data; 
}
Risinājums

Vienīgais veids, kā atgriezt datus no funkcijas, būtu veikt sinhrono izsaukumu, nevis asinhrono izsaukumu, taču tas bloķētu pārlūkprogrammu, kamēr tā gaidītu atbildi.

Jūs varat nodot atpakaļsaukuma funkciju, kas apstrādā rezultātu:

function testAjax(handleData) {
  $.ajax({
    url:"getvalue.php",  
    success:function(data) {
      handleData(data); 
    }
  });
}

Izsauciet to šādi:

testAjax(function(output){
  // here you use the output
});
// Note: the call won't wait for the result,
// so it will continue with the code here while waiting.
Komentāri (7)

Skatiet jquery docs piemēru: http://api.jquery.com/jQuery.ajax/ (aptuveni 2/3 lapas)

Jums, iespējams, ir nepieciešams šāds kods:

    $.ajax({
     url: 'ajax/test.html',
     success: function(data) {
     $('.result').html(data);
     alert('Load was performed.');
   }
});

Tā pati lapa... zemāk.

Komentāri (0)