Я пытаюсь получить 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);