2016-07-05 6 views
-1

関数からデータを渡したい場合、データは成功応答内に正常に戻ります。しかし、関数自体からデータを返すことはできません。 console.logで関数内のデータをHTTPポストから返す

function getStatusPublished(dating, product) 
     { 
     var datas = ""; 

     var deferred = $q.defer(); 

     var success = function(response, status, headers, config){ 
      datas = response; 
     } 


     var error = function(error, status, headers, config){ 
      datas = "error"; 
     } 


     var cdnss = "htttp://application_ajax"; 
     $http.post(cdnss+"&pblishDateVacan="+dating+"&ProjectID="+product).success(success).error(error); 


     console.log(datas); 
     } 

それだけで未定義を言いました。

助けてください。ありがとう。

+0

あなたが関数からデータを返すことはできませんが。 httpコールは非同期で、データを取得するまでに時間がかかります。関数は同期しており、すぐに戻ります。あなたはおそらくあなたの機能から約束を返すことを望んでいるでしょう。 – rob

+0

あなたは私を助けてくれますか、約束の返品でこれを行う方法は? –

+0

'console.log(datas);を入れてください。** INSIDE ** success関数 –

答えて

0

$http.postメソッドは、約束を返します。データではありません。

約束を返すには、単にreturnステートメントを使用してください。

function getStatusPublished(dating, product) { 
    var url = "htttp://application_ajax"; 
    var params = {pblishDataVacan: dating, 
        ProjectId: product}; 
    var config = { params: params }; 
    //return promise 
    return (
     $http.post(url,{},config) 
    ); 
}; 

.thenメソッドを使用し、約束からデータを取得するには、次の

var promise = getStatusPublished(d, p); 

promise.then(function(result) { 
    $scope.data = result.data; 
}).catch (function(result) { 
    console.log(result.status); 
}); 
関連する問題