sintaxis - Cómo devolver el texto de respuesta AJAX?
post jquery ejemplos (2)
¿Qué le parece agregar "asincrónico: falso" en su código? En mi caso, funcionó bien :)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo devuelvo la respuesta de una llamada asíncrona? 31 respuestas
Utilizo un prototipo para hacer mi desarrollo de AJAX, y uso el código de esta manera:
somefunction: function(){
var result = "";
myAjax = new Ajax.Request(postUrl, {
method: ''post'',
postBody: postData,
contentType: ''application/x-www-form-urlencoded'',
onComplete: function(transport){
if (200 == transport.status) {
result = transport.responseText;
}
}
});
return result;
}
Y me parece que el "resultado" es una cadena vacía. Entonces, intenté esto:
somefunction: function(){
var result = "";
myAjax = new Ajax.Request(postUrl, {
method: ''post'',
postBody: postData,
contentType: ''application/x-www-form-urlencoded'',
onComplete: function(transport){
if (200 == transport.status) {
result = transport.responseText;
return result;
}
}
});
}
Pero tampoco funcionó. ¿Cómo puedo obtener el texto de respuesta para otro método?
recuerde que onComplete se invoca mucho después de que someFunction termine de funcionar. Lo que debe hacer es pasar una función de devolución de llamada a la función some como parámetro. Se llamará a esta función cuando el proceso haya terminado de funcionar (es decir, cuando esté completo):
somefunction: function(callback){
var result = "";
myAjax = new Ajax.Request(postUrl, {
method: ''post'',
postBody: postData,
contentType: ''application/x-www-form-urlencoded'',
onComplete: function(transport){
if (200 == transport.status) {
result = transport.responseText;
callback(result);
}
}
});
}
somefunction(function(result){
alert(result);
});