无法使用AJAX post Jquery方法调用Web方法

时间:2014-10-25 04:05:31

标签: jquery asp.net ajax

无法使用jQuery Ajax post方法调用UpdateIt中显示的Default.aspx.cs方法。

在Default.aspx中:

function ActionComplete(args) {

    var ganttRecord = args.data; if (args.requestType === 'save') {

        $.ajax({
            type: "POST",
            url: "Default.aspx/UpdateIt", 
            data: ganttRecord,
            dataType: "json",
            success: OnSuccess,
            failure: function () {
                alert("Fail");
            }
        });
    }
} function OnSuccess() {
    alert("Pass");
}

在Default.aspx.cs中:

[WebMethod]
public static void UpdateIt(TaskData record)
{
    Default sample1 = new Default();
    sample1.Update(record);

}

请帮助我...

2 个答案:

答案 0 :(得分:1)

这是什么?数据:ganttRecord

应该是这样的,

      data: '{"param" ,"value"}',

    ADD THIS
      JSON.stringify({'ganttRecord'})


     contentType: "application/json; charset=utf-8",

更改

      public static void       

      public static string  

答案 1 :(得分:1)

最后我开始工作了。

以下是代码隐藏或服务器端代码。

[WebMethod]
public static string UpdateIt(TaskData record)
{
    Update(record);
    return "done";
}
public static void Update(TaskData r)
{
   // Write code to handle whatever you need.
}

注意: Update方法必须为static,因为它需要从static方法调用。此外,您不需要创建page类的实例,例如Default,然后调用此类Update方法 - sample1.Update(record);。因为您可以直接拨打Update,因为它位于Default.aspx.cs。这就是为什么我在Update(record)内使用了UpdateIt(TaskData record)

假设 TaskData具有以下结构。

public class TaskData
{
    public int id { get; set; }
    public string name { get; set; }
}

接下来,仔细查看JS代码。

var tskmgr = { 'record': {"id":"2" , "name": "ajax is happy"} };
$.ajax({
    type: "POST",
    url: "Default.aspx/UpdateIt",
    data: JSON.stringify(tskmgr),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        // alert(data.d);// this will show alert as "done". Check serverside code for more detail
        console.log(data);
    },
    failure: function (a,b,c) {
        alert("Fail");
    }
});

看一下JS结构,record是参数名,我首先使用它,然后参数值是对象所以,我使用了具有必需属性的对象,然后我使用了JSON.stringify来将它们发送到服务器端。

希望这对你有用。