Retornar respuesta AJAX en una función

Publicado por Emily Plank
hace 10 años

<p>Hola a todos. Tengo el siguiente problema. En una función hago una llamada ajax al servidor. El servidor responde esta llamada, y lo que necesito es que mi función retorne esa respuesta ajax. Entonces en la función "success" de ajax le asigno la respuesta a una variable y luego la retorno. Pero esto no funciona. Aquí está el código:</p>

<pre class="prettyprint"> function mi_function() { var resultado; $.ajax({ url: 'registro.php', success: function( respuesta ) { resultado = respuesta; } }); return resultado; }

var respuesta = mi_funcion();</pre>

<p>Creo que entiendo por qué no funciona, pero necesitaría saber de qué forma hacerlo funcionar. Gracias.</p>

ajax javascript
Respuesta de Ø Ale Herrera
hace 10 años

<p>hola, no funciona porque al ser un request via ajax, el callback o respuesta, como quieras llamarlo, ocurre en cualquier momento, por ende no sigue el orden del codigo. de esta forma, deberias hacer las cosas algo asi.</p>

<p> </p>

<pre class="prettyprint"> <span style="color:rgb(137,89,168);">function</span><span style="color:rgb(77,77,76);"> mi_function</span><span style="color:rgb(77,77,76);">()</span><span style="color:rgb(77,77,76);">{</span><span style="color:rgb(137,89,168);">var</span><span style="color:rgb(77,77,76);"> resultado</span><span style="color:rgb(77,77,76);">;</span><span style="color:rgb(77,77,76);"> $</span><span style="color:rgb(77,77,76);">.</span><span style="color:rgb(77,77,76);">ajax</span><span style="color:rgb(77,77,76);">({</span><span style="color:rgb(77,77,76);"> url</span><span style="color:rgb(77,77,76);">:</span><span style="color:rgb(113,140,0);">'registro.php'</span><span style="color:rgb(77,77,76);">,</span><span style="color:rgb(77,77,76);"> success</span><span style="color:rgb(77,77,76);">:</span><span style="color:rgb(137,89,168);">function</span><span style="color:rgb(77,77,76);">(</span><span style="color:rgb(77,77,76);"> respuesta </span><span style="color:rgb(77,77,76);">)</span><span style="color:rgb(77,77,76);">{ //aca va lo que queres que pase una vez que responda, todo lo que este fuera de esto va a ser independiente de cuando llegue la respuesta //podes llamar a otra funcion por ejemplo mi_funcion2(respuesta); o lo que quieras, manipulacion de DOM, pero siempre tene en cuenta que la parte del success es asincronca con el resto del codigo</span><span style="color:rgb(77,77,76);"> resultado </span><span style="color:rgb(77,77,76);">=</span><span style="color:rgb(77,77,76);"> respuesta</span><span style="color:rgb(77,77,76);">;</span><span style="color:rgb(77,77,76);">}</span><span style="color:rgb(77,77,76);">});</span><span style="color:rgb(77,77,76);">}</span><span style="color:rgb(137,89,168);">var</span><span style="color:rgb(77,77,76);"> respuesta </span><span style="color:rgb(77,77,76);">=</span><span style="color:rgb(77,77,76);"> mi_funcion</span><span style="color:rgb(77,77,76);">();</span></pre>

<p> </p>