2010-10-25 5 views
0

Depuis quelques jours, j'essaie de faire fonctionner un service web ASMX via jQuery.Appeler asmx via jquery se trompe url

Heres mon code

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btnTest").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "/WebService.asmx/HelloWorld", 
       cache: false, 
       contentType: "application/json; charset=utf-8", 
       data: "{}", 
       dataType: "json", 
       success: function (data) { 
        alert(data); 
       }, 
       error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus + ' ' + errorThrown + ' ' + XMLHttpRequest); } 
      }); 
     }); 
    }); 
</script> 

Le problème semble être que les contrôles du navigateur pour cette url:

http://localhost:52657/WebService.asmx/CheckSmtp 

Quand il faut vraiment vérifier cette url:

http://localhost:52657/myappname/WebService.asmx/CheckSmtp 

J'ai donc essayé sans le slash dans l'URL $.ajax, mais alors c'est pire, car si je suis sur une page admin/products/edit alors l'ajax va à admin/products/edit/webservice.asmx ce qui est définitivement faux.

Alors, comment puis-je demander à jquery de regarder dans le dossier racine?

Il se peut que le problème soit uniquement sur localhost, mais je ne peux rien tester de cette façon.

Répondre

1

Cela permettra de résoudre le côté droit du serveur url:

<%=ResolveUrl("~/WebService.asmx/HelloWorld")%> 
+0

Merci un million. En fait meanwhlile quelqu'un m'a envoyé une astuce de mettre une étiquette dans la page maître qui obtient son côté de la valeur du serveur à la racine du chemin. et ça a marché. mais cette technique m'a fixé un problème différent. le src du javascript ne résolvait pas non plus correctement. J'ai utilisé votre réponse et cela fonctionne. Merci. Amchoo? –

+0

ok. maintenant j'ai eu la chance de l'utiliser dans la partie url de l'ajax contol. ça marche juste dandy –

Questions connexes