2010-07-28 3 views
0

js:jQuery AJAX ne pas frapper ASP.NET Web Service lors du passage des paramètres

var paramStr = $('#id1').val() + '|' + $('#id2').val() + '|' + $('#id3').val(); 
    paramStr = '{"searchCriteria": "' + paramStr + '"}'; 

    $.ajax({ 
     type: "POST", 
     url: "/MyService.asmx/MyWebMethod", 
     data: paramStr, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(result) { 

     } 
    }); 

VB.NET:

<System.Web.Script.Services.ScriptService()> _ 
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class LogisticsMainMenuService 
    Inherits System.Web.Services.WebService 

     <WebMethod(EnableSession:=True)> _ 
     <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _ 
     Public Function MyWebMethod(ByVal searchCriteria As String) As String 
     Dim dummy as Integer = 1 
     . 
     . 
     Return someResult 
     End Function 
End Class 

Je mets un point de rupture à l'intérieur MyWebMethod. Lorsque j'appelle cet appel sur la page, le point d'arrêt n'est jamais touché. Cela fonctionne bien lorsque je supprime tous les paramètres de la signature de MyWebMethod et que je passe en '{}' de JS en tant que paramètres. Une fois que j'essaie de transmettre un paramètre de chaîne, il cesse de fonctionner. Aucune suggestion? Merci!

+0

Je ne sais pas si cela compte, mais n'est pas basé sur les services Web SOAP, en passant les paramètres de requête ne va changer l'URL à: /MyService.asmx/MyWebMethod?{"searchCriteria ":" 1 | 2 | 3 "} qui ne va pas très bien fonctionner –

+0

@Bob J'ai regardé environ 5 exemples différents, ils suggèrent tous de le faire de cette façon. J'ai déjà travaillé avec .NET MVC. Ceci (ou similaire) serait le moyen de le faire dans MVC. – Dimskiy

Répondre

0

Ok! Après avoir sérieusement cogné ma tête sur le clavier et avoir acquis des compétences supplémentaires en FireBug, j'ai résolu mon problème.

url: "/MyService.asmx/MyWebMethod",

devrait être

url: "MyService.asmx/MyWebMethod",

sans le "/".
Apparemment, le premier appel va à www.mysite.com/MyService.asmx comme opposer www.mysite.com/dir/MyService.asmx même si l'appel est fait depuis/dir ... ce que j'ai fait.
Happy AJAXing, tout le monde!

Questions connexes