Неопределенное свойство: stdClass: использование AngularJS + PHP

Я пытаюсь получить provCode или ID из provinceData from getFunction() . Я сделал это с помощью angular.forEach() , но я не ожидал получить следующую ошибку.

Примечание . Неопределенное свойство: stdClass :: $ provCode в C: \ xampp \ htdocs \ student-нарушение-system \ php \ address \ cities.php в строке 5
[]

Я попытался изменить {provCode: provCode} чтобы просто provCode также не работал.

Итак, я попытался изменить {provCode: provCode} на {provCode: '0456'} и он работает.

Но, конечно, это не то, что я хочу, я хочу, чтобы он был динамичным. Интересно, почему он говорит Undefined property потому что я пытался console.log provCode внутри getCity() и он имеет ожидаемое значение 0456 . Итак, мне интересно, почему это говорит о Undefined property .

app.factory

 factory.getProvince = function(){ return $http.get('php/address/province.php').then(function(response){ provinceData = response.data; console.log(provinceData); angular.forEach(provinceData, function(value, key) { if(value.provDesc == province){ provCode = provinceData[key].provCode; } }); // angular.forEach return provinceData; }) } factory.getCity = function(){ return $http.post('php/address/cities.php', {provCode: provCode}).then(function(response){ console.log(provCode); municipalityData = response.data; console.log(municipalityData); return municipalityData; }) } return factory; 

cities.php

 <?php include("../../connection.php"); $data = json_decode(file_get_contents("php://input")); $provCode = $data->provCode; $db->query('SET CHARACTER SET utf8'); $cities = $db->query(" SELECT * FROM refcitymun WHERE provCode='$provCode' "); $cities = $cities->fetchAll(); echo json_encode($cities); ?> в <?php include("../../connection.php"); $data = json_decode(file_get_contents("php://input")); $provCode = $data->provCode; $db->query('SET CHARACTER SET utf8'); $cities = $db->query(" SELECT * FROM refcitymun WHERE provCode='$provCode' "); $cities = $cities->fetchAll(); echo json_encode($cities); ?> 

ОБНОВИТЬ

Я регистрирую $data в cities.php и возвращаю значение null . Я не знаю, почему, потому что я console.log provCode внутри функции getCity и возвращает правильное значение / данные, которые я ожидал. Может кто-нибудь объяснить это мне, что происходит? Мой разум сходит с ума от этого.

Кстати, это один из моих текущих подходов к решению моей проблемы: Anglularjs, передающий значение от Controller, State Resolve и Factory Service

Кажется, вы определяете provCode как глобальную переменную. Попробуйте сначала объявить его как приватную переменную фабрики.

пример

 function MyFactory($http) { let provCode = 0; return { getProvince: function () { return $http.get('php/address/province.php') .then(function(response){ // do some stuff angular.forEach(provinceData, function(value, key) { if(value.provDesc == province){ provCode = provinceData[key].provCode; } }); // angular.forEach }) }, getCity: function() { return $http.post('php/address/cities.php', {provCode: provCode}) .then(function(response){ // do some stuff }) } }; } angular .module('app') .factory('MyFactory', MyFactory);