success - jquery ajax get
Datos de actualización jquery.ajax MIENTRAS procesa(antes de éxito o completo) (3)
Creo que estás buscando xhr
$.ajax({
xhr: function(){
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = (evt.loaded / evt.total) * 100;
$("#status").html(Math.round(percentComplete));
}
}, false);
//Upload progress
xhr.upload.addEventListener("load", function(evt){
}, false);
xhr.upload.addEventListener("error", function(evt){
$("#status").html("Upload Failed");
}, false);
xhr.upload.addEventListener("abort", function(evt){
$("#status").html("Upload Aborted");
}, false);
return xhr;
},
url: .........
espero que ayude
Intento actualizar los datos MIENTRAS estoy procesando (antes de tener éxito o completar)
la parte de "éxito" de .ajax espera hasta que php esté terminado ...
En la mayoría de los casos, esperar por el "éxito" es totalmente correcto.
PERO para php más largos (como usar ffmpeg en archivos grandes) el tiempo de espera es demasiado largo y genera errores ...
Tengo este código
$.ajax ({
type: ''GET'',
async: true,
url: ''__/_/_path_to_PHP_file.php'',
dataType: ''html'',
data:''__POSTvariable1__=''+encodeURIComponent (__POSTvariable1__)+
''&__POSTvariable2__=''+encodeURIComponent(__POSTvariable2__),
cache: false,
success: function(data){
$(''#div_that_needs_update'').html(data);
},
error: function(request, status, error){
console.log ( ''request.responseText --> '' + request.responseText + '' status --> '' + status + '' error --> '' + error );
}
});
•••• Intenté "completar" de "beforeSend" pero ¿hay un "whileLoading" o algo similar?
Gracias
Gracias por su respuesta (fue un muy buen comienzo)
Encontré esta página: http://www.sitepoint.com/php-streaming-output-buffering-explained/
y lo descubrí;) !!!!!
$.ajax ({
type: ''GET'',
async: true,
url: ''__/_/_path_to_PHP_file.php'',
dataType: ''html'',
data:''__POSTvariable1__=''+encodeURIComponent (__POSTvariable1__)+
''&__POSTvariable2__=''+encodeURIComponent(__POSTvariable2__),
cache: false,
xhr: function(){
var xhr = new XMLHttpRequest();
xhr.open(''GET'', ''__/_/_path_to_PHP_file.php'', true);
xhr.onprogress = function(e) {
$(''#div_that_needs_update'').html(e.currentTarget.responseText);
}
return xhr;
},
success: function(data){
console.log(''completed'');
},
error: function(request, status, error){
console.log ( ''request.responseText --> '' + request.responseText + '' status --> '' + status + '' error --> '' + error );
}
});
Lo finalicé más simple y más eficiente (con parámetros).
function liveXHR (p1 , p2) {
var params = ''param1=''+p1+''¶m2=''+p2;
xhr = new XMLHttpRequest();
xhr.open(''GET'', ''__URL_OF_PHP___''+"?"+params, true);
xhr.onprogress = function(e) {
$(''#__ID_DIV_forUpdate___'').html(e.currentTarget.responseText);
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
console.log(''Complete'');
//or any onther stuff when done ;)
}
}
xhr.send();
};