Bonjour.

Je viens vers vous car j'ai un problème de réponse ajax en jQuery, et j'aurai bien besoin de vos lumières.


pour faire simple, c'est la partie d'upload de mon site.
un script jquery envoi les données en ajax, le script php vérifie le fichier et le stock si tout va bien, renvoie un message d'erreur sinon.

le problème réside dans le message d'erreur retourné.

selon les navigateurs, tout fonctionne bien, ou pas du tout.

donc le problème serait : comment accéder à la propriété responseText de l'objet data.jqXHR sur Opera et IE...?



voici une partie de la fonction php appelée en ajax par le script jQuery

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
  private function _GetPictureUploadAjax()
  {
    error_reporting(E_ALL | E_STRICT);
 
    $upload_handler = new UploadHandler();
 
[...]
 
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Content-Disposition: inline; filename="files.json"');
    header('X-Content-Type-Options: nosniff');
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE');
    header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size');
 
[...]
    if(...)//si ya au moins une erreur
    {
      if(!in_array($avResult['extension'], $asAllowedExtensions))
      {
        $sErrorText .= MESS_FORM_ERROR_UPLOAD_WRONG_FILE_EXTENSION.'</br>';
      }
 
      if($avResult['size'] > self::UPLOAD_MAX_PICTURE_SIZE)
      {
        $sErrorText .= str_replace('{{maxfilesize}}', self::UPLOAD_MAX_PICTURE_SIZE_STRING, MESS_FORM_ERROR_UPLOAD_MAX_FILE_SIZE).'</br>';
      }
 
      return $sErrorText; // on retourne le ou les messages d'erreurs et donc on effectue pas l'upload
    }
[...]
//code de l'upload
[...]
}

et voici la partie jQuery chargée de la requête ajax

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$('#fileupload').fileupload({
	dataType : 'json',
	done : function(e, data) {
		functions.load();
	},
	fail : function(jqXHR, data) {
 
	console.log(data.jqXHR);
 
	var response = data.jqXHR.responseText;
 
	$('#fileupload').parent().prepend('<div class="errordiv"><img src="' + jcropRessPathA + 'warning.png" alt="warning"/><h3>' + response + '</h3></div>');			
	}
});


l’évènement fail de la fonction jquery doit récupérer la réponse et afficher le message d'erreur à l'écran


Sur Firefox, Chrome, Safari tout va bien.
Sur Opera et IE 9,8,7... l'objet retourné data.jqXHR.responseText est "undefined".


merci d'avance pour toute l'aide qui sera apportée.