2015-05-15 6 views
1

Я выполняю запрос GET на моем конце, чтобы получить некоторые данные JSON. Я хочу сохранить часть данных в переменной, потому что я хочу использовать ее после запроса. Но каждый раз переменная не определена, а я делал то же самое в другом контроллере. Может ли кто-нибудь сказать мне, что я делаю неправильно?

Это код:

var itemNumber; 
$http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){ 
     itemNumber = dataSerialNumber.id; 
    }).error(function(){ 
     //code 
    }); 

    console.log(itemNumber); 
    item.number = itemNumber; 

EDIT POST CALL:

var postPromise = $http.post(URLtoServer + 'problem/', item); 

    postPromise.success(function (response) { 
    angular.extend(item, response); 
    showIssueReportedAlert($mdDialog); 

    $http.get('assets/settings/general.json').success(function(data){ 
     companyURL = data[0].url; 

     $timeout(function(){ 
     //$window.location.href = companyURL; 
     }, 3000); 
    });   
    }); 

    postPromise.error(function(){ 
    showErrorAlert($mdDialog); 

    $scope.renderSendbutton = true; 
    $scope.showProgressCircular = false; 
    }); 
+0

Вы должны пройти '$ http'as а PARAMATERS в контроллере –

+0

я делаю это ... – Jesper

+0

Не $ http.get асинхронный? Если это так, вы можете получить доступ к нему до его назначения. – Robert

ответ

2

Вы можете поставить POST $http вызов внутри function и вызвать его в .success из ГЭТ.

var itemNumber; 
$http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){ 
     itemNumber = dataSerialNumber.id; 

     console.log(itemNumber); 
     item.number = itemNumber; 
     doPostCallNow(); //Calling the POST 
    }).error(function(){ 
     //code 
    }); 

function doPostCallNow(){ 
    var postPromise = $http.post(URLtoServer + 'problem/', item); 
    //And rest of your code... 
} 
+0

Я попробую – Jesper

+1

, который работал для меня, спасибо! :) – Jesper

+0

@ Jesper Great :) – Zee

2

Вы делаете запрос асинхронной get, который возвращает немедленно, а затем назначая ItemNumber (который не определен в момент с тех пор, как запрос get еще не завершен) на ваш item.number.

Вы должны выполнить задание в функции обратного вызова:

var itemNumber; 
$http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){ 
     itemNumber = dataSerialNumber.id; 

     console.log(itemNumber); 
     item.number = itemNumber; 
    }).error(function(){ 
     //code 
    }); 
+0

после этого получить запрос, я делаю POST-запрос на бэкэнд, а «item.number» по-прежнему не определено – Jesper

+0

. Вам также нужно поделиться этим кодом, а затем поэтому мы могли видеть, что не так. –

+0

Я отредактировал этот вопрос, вы найдете код POST-запроса там – Jesper

Смежные вопросы