我正试图从provCode
ID
获取provinceData
或getFunction()
。我使用angular.forEach()
做到了这一点,但我没想到会出现以下错误。
注意:未定义的属性: C:\ xampp \ htdocs \ student-violation-system \ php \ address \ cities.php 中的stdClass :: $ provCode 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);
?>
更新
我在 cities.php 中记录$data
,并且返回null
值。我不知道为什么,因为我在console.log
函数中provCode
getCity
并且它返回了我期望的正确值/数据。有人可以向我解释发生了什么吗?我的思绪在这个问题上发疯了。
顺便说一句,这是我在如何解决我的问题上的持续方法之一:Anglularjs passing value from Controller, State Resolve and Factory Service
答案 0 :(得分:0)
您似乎将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);