2

我正在使用 jquery ajax post 方法调用服务器端方法。但它没有被调用下面是我的代码..

js

var templateName = $("#txtTemplateName").val().trim(),
htmlHeader = $("#txtHtmlHead").val().trim(),
header = $("#txtHeader").val().trim(),
footer = $("#txtFooter").val().trim()

var templateData = {
    templateName: templateName,
    htmlHeader: htmlHeader,
    header: header,
    footer: footer       
};

我创建了 javascript 对象

$.ajax({
    type: "POST",
    url: "template_brow.aspx/SaveTemplate",
    data: JSON.stringify(templateData),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {
        alert(result.d);
        $("#divTemplate").find("input[type=text]").val('');
        $("#divTemplate").find("textarea").val('');
    },
    error: function() {
        alert("Error while calling the server!");
    }
});

在服务器端,我创建了一个具有上述属性的自定义类

[WebMethod(EnableSession = true)]
public static string SaveTemplate(TemplateVariables oTemplateVariables)
{
----

}

TemplateVariables 是自定义类

谁能帮我解决这个问题

4

1 回答 1

5
var templateName = $("#txtTemplateName").val().trim(),
htmlHeader = $("#txtHtmlHead").val().trim(),
header = $("#txtHeader").val().trim(),
footer = $("#txtFooter").val().trim()

var templateData = {
    templateName: templateName,
    htmlHeader: htmlHeader,
    header: header,
    footer: footer       
};

在这段代码之后写:

var strData={}; 
strData.oTemplateVariables = templateData;

然后在 ajax 调用中写入“data: JSON.stringify(strData)”而不是“data: JSON.stringify(templateData)”,如下所示:

$.ajax({
    type: "POST",
    url: "template_brow.aspx/SaveTemplate",
    data: JSON.stringify(strData),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {
        alert(result.d);
        $("#divTemplate").find("input[type=text]").val('');
        $("#divTemplate").find("textarea").val('');
    },
    error: function() {
        alert("Error while calling the server!");
    }
});

它会起作用的。

于 2013-09-05T11:01:53.857 回答