我使用http post使用以下代码从Web服务获取数据..
$http({
method: "post",
url: "SurveyQuestions.asmx/GetSurveyQuestions",
data: JSON.stringify({"empl_id" : '12345' , "Year" : '2015' }),
headers: { 'Content-Type': 'application/json' },
dataType: "json",
contentType: "application/json; charset=utf-8",
}).success(function (response) { //do something})
上面的代码在没有参数的情况下使用“get”正常工作。
我的帖子的网络服务是
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _
Public Sub GetSurveyQuestions(ByVal Empl_id as string, ByVal Year as string)
Try
//get list of records
Dim js As JavaScriptSerializer = New JavaScriptSerializer
Context.Response.Write(js.Serialize(listSurveyQuestions))
Catch ex As Exception
End Try
End Sub
Web服务执行正常并将数据返回到Method,但$http
中的响应为空并且出错。
答案 0 :(得分:0)
你只是尝试传递对象,只在URL中的最后添加。
这是我的情况我只是添加了员工ID。如果您只发送员工对象,它也会更正。
$scope.removeEmployee = function(employee) {
var method = 'DELETE';
var url = 'http://localhost:8080/AngularJSWithRestful/rest/product/Delete/' + employee.id ;
$http({
method : method,
url : url,
}).then(function successCallback(response) {
$scope.product = response.data.product;
}, function errorCallback(response) {
});
};
答案 1 :(得分:0)
因为您正在检索数据并且您的服务器上没有执行任何更改(根据您的评论),最好的做法是将其更改为HttpGet方法。然后在angular中你应该在传递的对象中使用params
属性到$ http函数。这是因为HttpGet
不支持邮件正文。来自documentation:
params -
{Object.<string|Object>}
- 将使用paramSerializer序列化并附加为GET参数的字符串或对象的映射。
您更改的代码:
$http({
method: "GET",
url: "SurveyQuestions.asmx/GetSurveyQuestions",
params: {"empl_id" : '12345' , "Year" : '2015' }, // use the params property
headers: { 'Content-Type': 'application/json' },
dataType: "json",
contentType: "application/json; charset=utf-8",
}).then(function (response) { //do something})
另请注意,成功和错误被角色团队标记为过时。建议的方法是使用then
代替。请参阅相同的文档链接。
弃用通知
$ http遗留承诺方法成功与错误已被弃用。请改用标准方法。如果$ httpProvider.useLegacyPromiseExtensions设置为false,则这些方法将抛出$ http / legacy错误。