Javascript Angularjs$http.post-将参数作为JSON发送到ASPX webmethod
我有下面的angularjs代码将http post发送到webmethod,但是我得到了以下错误,没有更多信息。有人能帮忙吗? 如果我不向webmethod发送任何数据,只从中获取数据,那么它就可以正常工作 加载资源失败:服务器响应状态为500(内部服务器错误) js:11442 POST 500(内部服务器错误) Javascript: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
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()
你能试试varrequest=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;
});