[JQuery] $.ajax et readyState==3

ViPHP
ViPHP | 3607 Messages

08 sept. 2009, 18:00

Bonjour à tous,
Je cherche actuellement à exploité des requêtes ajax en cours de traitement, mais ça n'est pas possible (à priori) avec les fonctions ajax de base de jquery, j'y parviens tout de même de cette manière:
[javascript]var xhr=$.ajax({
type: "POST",
url: "script.php",
data: requete
});

var taille=0;

var update=function(){
if (xhr.readyState == 3 && xhr.responseText.length > taille){
// traitement
}
};

xhr.onreadystatechange= function(){ update(); };
[/javascript]
Alors ça fonctionne tout bien, mais j'aimerais étendre jquery, afin de pouvoir faire plus propre, genre:
[javascript]
var taille=0;
$.ajax({
type: "POST",
url: "script.php",
data: requete,
onreadystatechange: function(status,response){
if(status==3 && response.length > taille){
//blabla
}
}
});[/javascript]
Seulement je n'ai aucune idée de comment faire...
Une idée?
Merci d'avance ;)

SpiderNéo
Invité n'ayant pas de compte PHPfrance

07 oct. 2009, 15:04

Bonjour,
D'aprés moi, tu devrais voir du coté de

jQuery.ajaxComplete()
jQuery.ajaxError()
jQuery.ajaxSend()
jQuery.ajaxSetup()
jQuery.ajaxStart()
jQuery.ajaxStop()
jQuery.ajaxSuccess()

ViPHP
ViPHP | 3607 Messages

07 oct. 2009, 15:37

Le problème c'est que ces fonctions permettent de remplacer les tests sur readyState pour les valeurs:
"1" (ajaxStart()),
"2" (ajaxSend()) et
"4" (ajaxComplete() ou ajaxSuccess() je ne sais pas),
mais "l'état" "3" (ie données reçues en parties) ne possède pas de fonction dédiées...
Du coup ben obligé d'utiliser l'objet xhr retourné par $.ajax