2012-05-13 56 views
6

PHP devuelve valor con demora de 1-2 segundos jQuery.post no espera respuesta.

¿Cómo crees que es posible solucionar ese problema y esperar la respuesta?

$.post(sSource, aoData, function (data) {  
     oCache.lastJson = jQuery.extend(true, {}, data); 
     if (oCache.iCacheLower != oCache.iDisplayStart) 
     { 
      data.aaData.splice(0, oCache.iDisplayStart-oCache.iCacheLower); 
     } 
     data.aaData.splice(oCache.iDisplayLength, data.aaData.length); 
     abc(oCache); 
     fnCallback(data); 
    },"json"); 

Nota la misma función con get funciona bien

$.getJSON(sSource, aoData, function (json) { 
     /* Callback processing */ 
     oCache.lastJson = jQuery.extend(true, {}, json); 

     if (oCache.iCacheLower != oCache.iDisplayStart) 
     { 
      json.aaData.splice(0, oCache.iDisplayStart-oCache.iCacheLower); 
     } 
     json.aaData.splice(oCache.iDisplayLength, json.aaData.length); 

     fnCallback(json) 
    }); 
+3

¿Tal vez la solicitud simplemente falla? – gdoron

+1

¿Qué quiere decir con "no espera una respuesta"? Estoy bastante seguro de que sí, ¿quizás no recibas la respuesta que crees que es o deberías recibir? –

+0

@gdoron no, no lo hace. Veo el resultado después de 1-2 segundos en Firebug – heron

Respuesta

16

$ .post es asíncrona, es necesario utilizar $ .ajax y establecer asíncrono a falso, de esa manera usted será capaz de espera la respuesta. Puede leer más sobre esto aquí: http://api.jquery.com/jQuery.ajax/

+0

Así es '$ .getJSON'. –

+1

Todos los métodos ajax de taquigrafía - '.load()', '.get()', '.post()', 'getJSON()' y 'getScript()' - son asíncronos. Como tal, se puede decir que todos "esperan la respuesta del servidor". AFAIK, solo '.ajax()' en sí mismo, con 'asynch: false', no es asincrónico, pero nunca debe usarse ya que no es compatible con todos los navegadores. –

+0

Entonces, ¿cuál es la solución? – JoeTidee

Cuestiones relacionadas