代码之家  ›  专栏  ›  技术社区  ›  Dimskiy

jquery ajax传递参数时未命中ASP.NET Web服务

  •  0
  • Dimskiy  · 技术社区  · 16 年前

    JavaScript:

     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
    

    我在MyWebMethod中放置了一个断点。当我在页面上调用这个调用时,断点永远不会被击中。当我从MyWebMethod的签名中移除所有参数并将JS中的“”作为参数传入时,它工作得很好。一旦我尝试传入一个字符串参数,它就会停止工作。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Dimskiy    16 年前

    好啊!在我认真地敲打键盘,学习了一些额外的萤火虫技能后,我的问题解决了。

    网址:“/myservice.asmx/mywebmethod”,

    应该是

    url:“myservice.asmx/mywebmethod”,

    没有第一个“/”。
    显然,第一个调用将以与www.mysite.com/dir/myservice.asmx相反的方式指向www.mysite.com/dir/myservice.asmx,即使从/dir内进行调用…我做到了。
    大家好,阿贾兴!