2017-06-16 6 views
1

Ich versuche, die provCode oder ID von der provinceData von getFunction() zu bekommen. Ich tat das, indem ich angular.forEach() verwendete, aber ich erwartete nicht, den folgenden Fehler zu erhalten.Nicht definierte Eigenschaft: stdClass: in der Verwendung von AngularJS + PHP


Hinweis: Nicht definierte Eigenschaft: stdClass :: $ provCode in C: \ xampp \ htdocs \ Student-Verletzung-System \ php \ address \ cities.php on line
[]

Ich habe versucht, die {provCode: provCode} zu nur provCode auch nicht funktioniert.

Also habe ich versucht, die {provCode: provCode} zu {provCode: '0456'} zu ändern und es funktioniert.

Aber natürlich ist es nicht was ich will, ich will es dynamisch sein. Ich frage mich, warum es das Undefined property sagt, weil ich console.log das provCode innerhalb des getCity() versuchte und es einen erwarteten Wert von 0456 hat. Also, ich frage mich, warum es Undefined property sagt.

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); 
?> 

UPDATE

Ich log die $data in cities.php ein nd es gab null Wert zurück. Ich weiß nicht warum, weil ich die console.log die provCode innerhalb der getCity Funktion und es gibt den richtigen Wert/Daten, die ich erwartet hatte. Kann mir jemand erklären, was passiert? Mein Verstand ist verrückt nach diesem.

Durch die Art und Weise es eine meiner laufenden Ansatz ist, wie mein Problem auf dieses Problem zu lösen: Anglularjs passing value from Controller, State Resolve and Factory Service

+0

Einmal einloggen '$ data' und sehen, ob Sie Daten bekommen oder nicht. – SaiUnique

+0

Wie kann ich die $ Daten protokollieren? – Marksmanship

+0

Ich logge die $ Daten und es wurde 'null' zurückgegeben – Marksmanship

Antwort

0

Es scheint, sind Sie provCode als globale Variable definiert wird. Versuchen Sie es zuerst als eine private Variable der Fabrik zu deklarieren.

Beispiel

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); 
+0

provCode' ist bereits in meinem 'app.factory' ' app.factory ('data', function ($ stateParams, $ http) erklärt – Marksmanship

Verwandte Themen