Angularjs$http.post-将参数作为JSON发送到ASPXwebmethod

Angularjs $http.post - sending params as JSON to ASPX webmethod

本文关键字:JSON ASPXwebmethod http post- 参数 Angularjs      更新时间:2023-09-26

我有以下angularjs代码将http post发送到一个webmethod,但我得到了以下错误,没有更多信息。有人能帮忙吗?如果我不向webmethod发送任何数据,只从中获取数据,它就可以正常工作!

未能加载资源:服务器的响应状态为500(内部服务器错误)angular.js:111442 POSThttp://localhost:54461/GetData.aspx/getData500(内部服务器错误)

Javascript:

var request = "{'name':'" + "Nariman" + "'age':'" + 12 + "'}";
$scope.retData = {};
var config = {
    headers: {
        'Content-Type': '"application/json; charset=utf-8";',
        'dataType': '"json"'
    }
}
$scope.retData.getResult = function (item, event) {
    $http.post('GetData.aspx/getData', request, config)
        .success(function (data, status, headers, config) {
            $scope.retData.result = data.d;
        })
        .error(function (data, status, headers, config) {
            $scope.status = status;
        });
}

ASPX网络方法(C#):

public static string getData(string name, int age)
{
    string.Format("Name: {0}{2}Age: {1}", name, age, Environment.NewLine);
}

编辑---------------------------------------

如果我不向webmethod发送任何json数据,它就可以正常工作。例如,下面的代码是有效的,如果我把断点放在web方法中,它就会显示它在那里。但如果我发送json数据,它不会进入webmethod:

Javaacipt(不发送任何json数据):

var config = {
    headers: {
        'Content-Type': '"application/json; charset=utf-8";',
        'dataType': '"json"'
    }
}
$scope.retData.getResult = function(item, event) {
    $http.post('GetData.aspx/getData', data, config)
        .success(function(data, status, headers, config) {
            $scope.retData.result = data.d;
        })
        .error(function(data, status, headers, config) {
            $scope.status = status;
        });
}

ASPX(无输入参数时)

public static string getData()
{
    // just having a breakpoint shows it comes inside the 
    // webmethod when no data is passed. 
}

您的问题似乎正如Emmanual Durai在问题的第一条评论中指出的那样:var request = "{'name':'" + "Nariman" + "'age':'" + 12 + "'}";不是一个有效的json对象。

请求将为您提供{'name':'Nariman'age':'12'}作为字符串,该字符串不会解析为JSON(格式有问题)。

你应该尝试下面这样的方法来获得一个有效的字符串

var request = {
    name: "Nariman",
    age: 12
}
var requestString = JSON.stringify(request)

另外请看一下如何将json POST数据作为对象传递给Web API方法。您的问题通常不是angularjs $http特有的,而是XHR请求特有的。

只需更改:

var request = "{'name':'" + "Nariman" + "'age':'" + 12 + "'}";

收件人:

var request = { name: "Nariman", age: 12 };

您不必使用JSON.stringify()

var request = { name: "Nariman", age: 12 };
var config = {
    headers: {
        "Content-Type": "application/json; charset=utf-8"
    }
}
    $http.post('GetData.aspx/getData', request, config)
        .success(function(data, status, headers, config) {
            $scope.retData.result = data.d;
        })
        .error(function(data, status, headers, config) {
            $scope.status = status;
        });