Javascript Angularjs$http.post-将参数作为JSON发送到ASPX webmethod

Javascript Angularjs$http.post-将参数作为JSON发送到ASPX webmethod,javascript,c#,asp.net,angularjs,webmethod,Javascript,C#,Asp.net,Angularjs,Webmethod,我有下面的angularjs代码将http post发送到webmethod,但是我得到了以下错误,没有更多信息。有人能帮忙吗? 如果我不向webmethod发送任何数据,只从中获取数据,那么它就可以正常工作 加载资源失败:服务器响应状态为500(内部服务器错误) js:11442 POST 500(内部服务器错误) Javascript: var request = "{'name':'" + "Nariman" + "'age':'" + 12 + "'}"; $scope.retData

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

加载资源失败:服务器响应状态为500(内部服务器错误) js:11442 POST 500(内部服务器错误)

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 webmethod(C#):

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

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

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

ASPX(无输入参数时)


您的问题似乎正如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)
也请看这里。您的问题通常不是特定于angularjs
$http
,而是一般的
XHR
请求。

只需更改:

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

您不必使用JSON.stringify()


你能试试var
request=JSON.stringify({name:“Nariman”,年龄:12})吗错误代码
500
表示服务器端代码出现异常。我建议你去看看有没有例外。正如您所指出的,数据是从客户机传递的,它很可能看起来像服务器上的某个意外值。您可以从“服务器异常”中获得有关此问题的更多详细信息。@EmmanuelDurai谢谢。我刚刚试过……还是一样的错误。@S4beR谢谢你的回复。它是一个本地主机(VisualStudio调试模式)…而且它在我的服务器端代码上根本不会失败!如果我不传递任何数据,只调用getdata,那么它只工作一次。但对于传递数据,当我在这里设置断点时,它甚至不会进入我的webmethod。您是否可以在API调用中共享从客户端传递到服务器的数据格式,以及如何在服务器上读取数据?谢谢,您知道如果我想以json的形式发送obj,应该怎么做吗?执行如下操作:var obj={};obj.name=“nariman”obj.age=12个作品?我试过了,但没用?!!!看一看这里谢谢,你知道如果我想发送一个obj作为json应该怎么做吗?执行如下操作:var obj={};obj.name=“nariman”obj.age=12个作品?我试过了,但没用?!!!谢谢,但是如果我不使用JSON.stringify()的话,您的解决方案就不起作用了
public static string getData()
{
    // just having a breakpoint shows it comes inside the 
    // webmethod when no data is passed. 
}
var request = {
    name: "Nariman",
    age: 12
}

var requestString = JSON.stringify(request)
var request = "{'name':'" + "Nariman" + "'age':'" + 12 + "'}";
var request = { name: "Nariman", age: 12 };
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;
        });