从服务返回数据未返回正确数据
Posted
技术标签:
【中文标题】从服务返回数据未返回正确数据【英文标题】:Return data from service not returning proper data 【发布时间】:2017-06-17 11:07:54 【问题描述】:我编写了一个 Angular 服务,它从我的 C# 后端获取一些虚假数据。 C# 后端为该进程使用 ASMX 文件。我有数据回来了,一切都很好,然后我的数据永远不会填充。
我有这种感觉,这与从承诺中返回的数据传递有关。
服务:
app.service('fakeDataCenter', function ($http)
this.getFakeData = function ()
var obj =
phoneNumber: "",
faxNumber: "",
address: "Loading..",
;
$.ajax(
type: "POST",
url: "/Services/DataService.asmx/getFakeData",
cache: false,
contentType: "application/json; charset=utf-8",
data: "",
dataType: "json",
success: function(data, status)
obj = data;
);
return obj;
;);
我可以说我在点击 obj = data 之前点击了 return obj。如何使代码仅在填充数据后返回。
我已经尝试将 return 语句放入成功函数中,但没有任何运气。它只是返回一个未定义的对象。
【问题讨论】:
您应该考虑使用来自 AngularJS 的$http
而不是 jQuery 的 $.ajax
。此处的答案是 ajax 是异步的,因此您在完成之前会返回 obj
。见***.com/questions/14220321/…
How do I return the response from an asynchronous call?的可能重复
我已经更改了我的代码以实现 $http AngularJS 方式仍然得到未定义的返回,因为它在达到承诺结果之前命中了 return 语句。
【参考方案1】:
我建议您使用 angular 方法,因为您在应用程序中使用了 angular。像这样更改您的服务方法:
this.getFakeData = function ()
var obj =
phoneNumber: "",
faxNumber: "",
address: "Loading..",
;
return $http.post('/Services/DataService.asmx/getFakeData', obj).then(
function (res)
return res.data;
,
function(onErr)
return onErr.data;
)
然后在您的角度控制器中,您可以像这样获得返回的数据:
fakeDataCenter.getFakeData().then(
function(data)
//here in data there is your C# backend service data
);
【讨论】:
以上是关于从服务返回数据未返回正确数据的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL NOT BETWEEN 未返回正确数据