将数据从Ajax调用传递给C#Web方法

时间:2016-11-26 12:32:16

标签: c# ajax web methods

我们希望将带有ajax调用的Web表单的内容发送到Web方法,该方法又调用Web服务将表单内容插入到数据库中。 我们不使用MVC,而是使用我们的自定义c#代码。

我们的javascript如下:

        var data = {
            HT: $("input[name='HT']").val(),
            KT: $("input[name='KT']").val(),
            T: $("input[name='T']").val()
        };
        $.ajax({
            type: "POST",
            url: "LTCreate.aspx/Create",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(data),
            async: true,
            success: function(msg) {
                alert(msg.d);
            }
        });

我们的c#代码如下:

        [WebMethod(EnableSession = true)]
        public static string Create(string strJson)
        {             


                 HT = JsonConvert.DeserializeObject<pb.CLS_HT>(strJson);

         ret = ws.INSERT_HT(SYSTEM_CODE, USER_INFO, HT, ref errMsg);
         if (ret < 0)
         {
             return ret.ToString() + " " + errMsg;
         }
         else
         {
             return ret.ToString();
         }
       }

当我运行上面的代码时,我们收到以下错误消息:

  

消息:&#34;无效的Web服务调用,缺少参数值:   &#39; strJson&#39;。&#34;,... Stack Trace:at   System.Web.Script.Services.WebServiceMethodData.CallMethod(对象   target,IDictionary`2参数)↵at   System.Web.Script.Services.RestHandler.InvokeMethod

我们怎样才能在c#web方法中正确获取数据字符串的内容?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用ScriptManager并启用PageMethods,如下所示:

<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server"></asp:ScriptManager>

写这样的函数:

[System.Web.Services.WebMethod(EnableSession = true)]
    public static string Edit_Program(string ProgramID)
    {
        //Some Codes
        return "OK";

    }

从JavaScript调用函数:

function Edit_Program(data) {
    PageMethods.Edit_Program(data, OnSuccessEditCallback, OnFailureCallback);
    }

    function OnSuccessCallback(res) {
        //Some Codes
    }

    function OnSuccessEditCallback(res) {
        //Some Codes
    }