没有从AngularJS中的Service获得返回值

时间:2017-07-27 09:37:06

标签: javascript angularjs

我正在尝试将我的服务输出返回到控制器的调用变量"响应"。该服务确实被调用,它也有一个输出,但它永远不会再回到我的调用。我在这里做错了什么?

this.AssociatetoJob1 = function (application) {
    var config = {
        headers: {
            'contentType': 'application/json; charset=utf-8;'
        }
    };
    return $http.post('/api/Application/AddApplication', 
        JSON.stringify(application), config).then(function (result) {
            return result.data;
        });     
}

以下是来自我的呼叫控制器的行:

var response = CandidateService.AssociatetoJob1(appInfom);

3 个答案:

答案 0 :(得分:0)

您的contentType错误。请改变此Content-Type

<强> JS

    this.AssociatetoJob1 = function (application) {
    var config = {
        headers: {
            'Content-Type': 'application/json; charset=utf-8;'
        }
    }
    return $http.post('/api/Application/AddApplication', JSON.stringify(application), config).then(function (result) {
        return result.data;
    });

}

<强> HTML

var response = CandidateService.AssociatetoJob1(appInfom);

您可以使用.then对已解决的承诺进行API调用返回的详细信息。

response.then(function(result){
  console.log(result.data);
})

答案 1 :(得分:0)

this.AssociatetoJob1 = function (application) {
    var config = {
        headers: {
            'contentType': 'application/json; charset=utf-8;'
        }
    }
    return $http.post('/api/Application/AddApplication', JSON.stringify(application), config).then(function (result) {
        return result.data;
    });

}

上面的代码确实会返回Promise对象。为了利用这个,你需要在控制器中执行类似下面的操作:

  var responseData ; 
  CandidateService.AssociatetoJob1(appInfom).then(function(res‌​ponse){ 
     responseData  = response.data ;
    })

答案 2 :(得分:0)

在你的&#34; this.AssociatetoJob1&#34;功能,你称之为服务

return $http.post('/api/Application/AddApplication', JSON.stringify(application), config).then(function (result) {
    return result.data;
});

在此,您在调用服务时使用了回调函数,而不是这样,请调用

之类的服务
return $http.post('/api/Application/AddApplication', JSON.stringify(application), config);

这意味着只需从服务调用中删除.then()回调并调用&#34; this.AssociatetoJob1&#34;像

这样的方法
this.AssociatetoJob1(application).then(function(response){console.log(response.Data)});

希望它能帮到你......