Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 18h59   #1
Membre confirmé
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2005
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2005
Messages : 180
Points : 231
Points : 231
Par défaut FireFox et prototype Ajax

Bonjour,
J'ai un problème avec la librairie prototype et Ajax sous FireFox.

Je fais juste un appel comme suit, pour simplifier j'ai enlevé tous les paramétrages, j'ai mis l'option asynchronous et tout un tas d'options et ca ne change rien avec ou sans parameters :
Code :
resultat = new Ajax.Request('http://localhost:8080/monsite/monService/listjson',{parameters:''});
J'ai mis une trace sur mon service pour voir si l'appel est bien reçu. Ma console m'indique que c'est OK sous IE mais aucun signe avec FireFox.
J'ai recodé ce service sans prototype et la ca marche bien :
Code :
1
2
3
var client = new XMLHttpRequest();
		client.open("POST", "http://localhost:8080/monsite/monService/listjson", true);
		client.send("");
J'ai mis une trace également dans prototype au moment du send et il m'indique bien que les paramètres sont les mêmes que ceux de mon test sans prototype.
Je ne vois pas ce qui ne va pas, rien dans la console Firefox. Quelqu'un aurait une explication svp?
macumba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 11h58   #2
Membre confirmé
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2005
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2005
Messages : 180
Points : 231
Points : 231
L'appel est ok sous Firefox si j'enlève l'appel de setRequestHeaders au niveau de prototype :
Code :
1
2
3
4
5
6
7
8
9
      this.transport.open(this.method.toUpperCase(), this.url,
        this.options.asynchronous);

      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);

      this.transport.onreadystatechange = this.onStateChange.bind(this);
      this.setRequestHeaders();
      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
      this.transport.send(this.body);
Code :
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
 setRequestHeaders: function() {
    var headers = {
      'X-Requested-With': 'XMLHttpRequest',
      'X-Prototype-Version': Prototype.Version,
      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
    };

    if (this.method == 'post') {
      headers['Content-type'] = this.options.contentType +
        (this.options.encoding ? '; charset=' + this.options.encoding : '');

      /* Force "Connection: close" for older Mozilla browsers to work
       * around a bug where XMLHttpRequest sends an incorrect
       * Content-length header. See Mozilla Bugzilla #246651.
       */
      if (this.transport.overrideMimeType &&
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
            headers['Connection'] = 'close';
    }

    if (typeof this.options.requestHeaders == 'object') {
      var extras = this.options.requestHeaders;

      if (Object.isFunction(extras.push))
        for (var i = 0, length = extras.length; i < length; i += 2)
          headers[extras[i]] = extras[i+1];
      else
        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
    }
    for (var name in headers)
      this.transport.setRequestHeader(name, headers[name]);
  }
Si j'enlève la dernièr boucle setrequestheaders "for (var name in headers)
this.transport.setRequestHeader(name, headers[name]);" ca marche...

Je ne vois pas pourquoi ... Si quelqu'un peut m'éclairer... PS : Le résultat que j'attend est au format JSON.
macumba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 21h45   #3
Membre confirmé
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2005
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2005
Messages : 180
Points : 231
Points : 231
Je pense que mon pb est le même que sur ce post (execution en local),:

http://www.developpez.net/forums/d94...x/#post5310725
macumba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h11.


 
 
 
 
Partenaires

Hébergement Web