JS/Ajax appel d'une fonction de webservice avec un paramètre

JS/Ajax appel d'une fonction de webservice avec un paramètre - HTML/CSS - Programmation

Marsh Posté le 04-12-2009 à 10:20:36    

Bonjour,
 
J'ai développé un Web service ASP .NET qui doit être utilisé obligatoirement depuis du javascript avec internet Explorer.
Pour l'instant j'arrive à appeler les WebMethods de mon webservice qui ne demandent aucun paramètre.
Cela fait un moment que je cherche et aucune des solutions que j'ai trouvé sur le net ne foncionne  :( .
Voici mon code côté WebService:

Code :
  1. [WebMethod]
  2. public void Ajout()   //Celle ci fonctionne, pas de paramètres  :)  
  3. {
  4.     ThreadStart ST = new ThreadStart(lesOperations.ThreadAjout);
  5.     Thread T = new Thread(ST);
  6.     T.Start();
  7. }
  8. [WebMethod]
  9. public void MAJStatutIncident(string refRally) //Celle ci ne fonctionne pas, lorsque je met un point d'arrete je ne passe même pas par là.
  10. {
  11.     ParameterizedThreadStart ST = new ParameterizedThreadStart(lesOperations.ThreadMAJStatut);
  12.     Thread T = new Thread(ST);
  13.     T.Start(refRally);
  14. }


 
Je pense qu'il n'y a pas de problème du côté de mon webservice car j'arrive à appeller cette fonction avec la page générée par visual studio lors du démarrage du webservice.
 
Voici le code de mon Javascript. L'application qui appel mon Webservice a un événement OnSave() qui me permet de faire du JS lors d'une sauvegarde.  
mon code pour la fonction sans paramètre fonctionne :

Code :
  1. var xhr_object = null;
  2. xhr_object = new ActiveXObject("Microsoft.XMLHTTP" ); 
  3. xhr_object.open("POST", "http://localhost:1658/Service1.asmx/Ajout", false); 
  4. xhr_object.send(null); 
  5. if(xhr_object.readyState == 4) alert("Transfert vers rally en cours. Le transfert peut durer quelques secondes.(F5 pour rafraichir)" );
  6. if(xhr_object.readyState == 0) alert("Echec du transfert vers rally." );


celui qui demande un paramètre ne fonctionne pas :

Code :
  1. var data = "refRally=" + crmForm.all.to_ref.DataValue;
  2. var xhr_object = null;
  3. xhr_object = new ActiveXObject("Microsoft.XMLHTTP" ); 
  4. xhr_object.open("POST", "http://localhost:1658/Service1.asmx/MAJStatutIncident", true); 
  5. xhr_object.send(data); 
  6. if(xhr_object.readyState == 4) alert("Recupération du statut rally en cours (F5) pour rafraichir." );
  7. if(xhr_object.readyState == 0) alert("Echec lors de la récupération du statut." );


 
J'ai pourtant l'impression que c'est bon, qu'est ce qui ne va pas ?


Message édité par jerem95670 le 04-12-2009 à 10:47:49
Reply

Marsh Posté le 04-12-2009 à 10:20:36   

Reply

Marsh Posté le 07-12-2009 à 09:51:17    

Je n'ai toujours pas trouvé :(. Des idées ?

Reply

Marsh Posté le 07-12-2009 à 13:06:59    

tu n'as pas compris ce que Ajax veut dire :)


---------------
Blablaté par Harko
Reply

Marsh Posté le 07-12-2009 à 13:30:51    

Je suis tout à fait d'accord lol, je m'y connais pas vraiment coté web.
En fait je suis obligé de communiquer avec mon webservice par du Javascript et on m'a dit qu'appeller un serveur depuis Javascript c'était de l'Ajax (quel rapport avec le lave vitre Oo).
 
J'ai vu que la page web générée par VisualStudio faisait des methodes POST, donc j'ai essayé de faire la même chose avec un objet ActiveX, ca fonctionne bien sans paramètre.
Après j'ai lu qu'on pouvait envoyer des paramètres dans l'URL grâce à la methode GET en ajoutant "?" + le nom de la variable + "=" + la valeur entre guillemets. Je n'ai pas reussi à le faire fonctionner de cette manière.
Plus tard j'ai vu qu'on pouvait le faire avec POST en donnant les valeurs dans le send(). Mais ca ne fonctionne pas non plus :(.  
Donc me voilà :)

Reply

Marsh Posté le 08-12-2009 à 16:07:05    

Volià j'ai trouvé, il manquait un Header à mon objet :
 

Code :
  1. var xhr_object = null;
  2. xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  3. xhr_object.open("POST", "http://localhost:1658/Service1.asmx/MAJStatutIncident", true);
  4. xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded" ); //Le header rajouté
  5. xhr_object.send('refRally='+crmForm.all.to_ref.DataValue);
  6. if(xhr_object.readyState == 4) alert("Recupération du statut rally en cours (F5) pour rafraichir." );
  7. if(xhr_object.readyState == 0) alert("Echec lors de la récupération du statut." );

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed