aspx页面中的Web方法未被执行

时间:2015-12-17 10:33:26

标签: javascript angularjs angularjs-http

我正在尝试在页面加载本身上发出一个ajax请求。我正在使用angular js $ http服务从我的User.aspx.cs页面中的web方法中获取Json数据。

我的网络方法如下:

[WebMethod]
    [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
    public static List<Users> GetUsers()
    {
        DBUtil objUtils = new DBUtil(); //This is my class for db connection

        List<Users> list = new List<Users>();
        string strQuery = "select * from TM_Users";
        DataTable dt = objUtils.GetDataTable(strQuery);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            list.Add(new Users {FullName=dt.Rows[i]["FullName"].ToString(),
            UserName=dt.Rows[i]["UserName"].ToString(),
            Password=dt.Rows[i]["Password"].ToString(),
            phNum=dt.Rows[i]["MobileNo"].ToString(),
            EmailId=dt.Rows[i]["EmailAddress"].ToString(),
            Usertype=dt.Rows[i]["UserType"].ToString(),
            CenterId=dt.Rows[i]["HealthCenterID"].ToString()
            });
        }
            return list;
    }

web方法没有问题。当我尝试在$ http的帮助下调用web方法,这是在一个单独的js文件中写入控制器内的Control.js。我的功能是,我正在使用一个ng网格,所以用数据库中的数据绑定该网格。 代码如下:

var app = angular.module("myApp", ["ngGrid"]);

app.controller('myCtrl', function ($scope, $http, $location) {
    //var myData = $http.get("User.aspx/GetUsers");
    $scope.location = $location;
    var url1 = "User.aspx/GetUsers";
    var myData;
    $http.get(url1).success(function (data,status,headers) {
        myData = data;
    }).error(function (err) {
        console.log(err);
    })
    $scope.gridOptions = {
        data: 'myData'
    };

});

当我调试我注意到的是sucess处理程序正在执行。但是aspx.cs页面上的web方法没有得到执行。我在成功处理程序数据中收到的响应是.aspx网页的整个html

感谢您的帮助!!

2 个答案:

答案 0 :(得分:1)

稍微更改你的http get调用。我已经添加了内容类型,空数据对象和响应类型为json。

var app = angular.module("myApp", ["ngGrid"]);

app.controller('myCtrl', function ($scope, $http, $location) {
    var request =
    {        
    method: "GET",
    url: "User.aspx/GetUsers",
    data: {},
    headers: { "Content-Type": "application/json" },
    responseType: 'json'
    }

    $http(request).then(function (data,status,headers) {
        myData = data;
    }).error(function (err) {
        console.log(err);
    })
    $scope.gridOptions = {
        data: 'myData'
    };

});

});

答案 1 :(得分:0)

Webmethod应该是static方法。