Angularjs$http.post-将参数作为JSON发送到ASPXwebmethod
Angularjs $http.post - sending params as JSON to ASPX webmethod
我有以下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;
});
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 如何为json对象中的段发送array[]
- 根据id将json数组组合为一个json数组
- Json数据包含日期和时间格式
- AngularJS-在JSON选择器中使用变量名
- Angularjs$http.post-将参数作为JSON发送到ASPXwebmethod