从ajax帖子调用的Web方法

时间:2015-08-04 14:04:44

标签: javascript asp.net ajax angularjs webmethod

我试图从ajax调用一个方法作为web方法,如:

$.ajax({
                    url: 'LifeStyleManager.aspx/AddSelfEntry',
                    method: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: angular.toJson(categories),
                    //data: angular.copy(categories)

也尝试过数据" {' items' :'" + angular.toJson(类别)+"'}"

序列化为

{
    "items": "[{\"name\":\"Fruits\",\"metrics\":\"cups\",\"entry\":0,\"recommended\":true,\"color\":\"#989898\"},{\"name\":\"Vegetables\",\"metrics\":\"cups\",\"entry\":1,\"recommended\":true,\"color\":\"#37A0BC\"},{\"name\":\"Whole Grains\",\"metrics\":\"cups\",\"entry\":1,\"recommended\":true,\"color\":\"#37A0BC\"},{\"name\":\"Fast Foods\",\"metrics\":\"times\",\"entry\":0,\"recommended\":false,\"color\":\"#989898\"},{\"name\":\"Sweets\",\"metrics\":\"times\",\"entry\":0,\"recommended\":false,\"color\":\"#989898\"},{\"name\":\"Sugary Drinks\",\"metrics\":\"times\",\"entry\":0,\"recommended\":false,\"color\":\"#989898\"}]"
}

此处类别序列化为

 [
    {
        "name": "Fruits",
        "metrics": "cups",
        "entry": 0,
        "recommended": true,
        "color": "#989898"
    },
    {
        "name": "Vegetables",
        "metrics": "cups",
        "entry": 1,
        "recommended": true,
        "color": "#37A0BC"
    }
]

Webmethod就像:

        [WebMethod(true)]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string AddSelfEntry(List<Entry> items)
        {

这里的条目是

public class Entry
        {
            public string name;
            public string metrics;
            public int entry;
            public bool recommended;
            public string color;

        }

我在控制台收到错误:

enter image description here

在debugmode中没有在webmethod上遇到断点。

更新:我从另一个html页面调用ajax而不是aspx页面,其中web方法位于代码隐藏中。是原因吗?

请在我错的地方帮忙?

1 个答案:

答案 0 :(得分:1)

你的jQuery版本是什么?

  

输入(默认:'GET'

     

输入: String

     

method的别名。

     

如果您使用的是1.9.0之前的jQuery版本,则应使用type

而不是method,请在您的AJAX中尝试type: "POST"