我们希望将带有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方法中正确获取数据字符串的内容?
谢谢。
答案 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
}