从服务返回数据未返回正确数据

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
    
);

【讨论】:

以上是关于从服务返回数据未返回正确数据的主要内容,如果未能解决你的问题,请参考以下文章

Azure 函数对象返回未返回正确的嵌套值

数据流 BigQuery 读取未返回正确的数据类型

Oracle SQL NOT BETWEEN 未返回正确数据

从 PHP Web 服务未正确返回编码响应

我的返回数据表单 AFNetworking JSON 未正确显示

从 GRPC c++ 服务器实现返回“未找到”响应的正确方法是啥?