2016-03-23 33 views
0

JSON'dan yapılmış bir masa var, her satırda bir düğme var ve tıklattığınızda, öğe kimliğini ileten bir web hizmeti çağırır. Web hizmetleri, veritabanından eleman silinmeyi dener, eğer silinebilirse, 'status' özniteliği ve iki olası değeri 'ERASED' (silinmişse) veya 'IN_USE' (eğer değilse) ile basit bir JSON döndürür. Düğmeye tıkladığımda, web servisi cevap verir ('IN_USE' aslında). Ancak bir mesajı göstermek için 'status' değerini okuduğumda ('IN_USE' veya 'ERASED' olmasına bağlı olarak) 'undefined' değerini döndürür ve nedenini bilmiyorum. Bazı hileler yapıyorum ama hala çalışmıyor.Köşeli Ayrı Ayrı Ayrı

$app->get('/tipusactius/edita/elimina/:id.json', function($id){ 
    header("Content-Type: application/json"); 
    $SQL = 'DELETE FROM atributs_actiu WHERE idatributs_actiu = '.$id; 
    error_log('DELETE STATEMENT: '.$SQL, 0); 
    $mysqli = getDB(); 
    $r = $mysqli->query($SQL); 
    error_log(mysqli_error($mysqli)); 
    if(!$r){ 
     $results[] = array('status' => 'IN_USE'); 
    } 
    else{ 
     $results[] = array('status' => 'ERASED'); 
    } 

    echo json_encode($results); 
}); 
:

web hizmeti vardır
$scope.show = function (id) { 
        $http.get('http://10.0.203.73/WS/ws.php/tipusactius/edita/elimina/' + id + '.json').success(function (data) { 
         $scope.sts = data.status; 
         $window.alert($scope.sts); 
        }); 

        if ($scope.sts.status == 'IN_USE') { 
         $window.alert('Aquest atribut no es pot eliminar perque és en ús'); 
        } 

       } 

(o ince çerçeve 2 ile yapılır): Ben de ince çerçeve 2.

kontrolör (sorunları ile sadece fonksiyonu) ile web hizmeti yaptı

Web hizmetleri tamam çalışıyor, ancak durum değerini kontrol etmeye çalıştığımda konsolda tanımsız bir şekilde alıyorum.

Çözüldü:

bu dava üzerinde iki hata oluştu: 1-funciton asenkron, yani ben bile mesajı hala-ı 2 değildi 'tanımsız' varlık olabilir sunucudan şey olsun 'durum' değerini uygun şekilde önbelleğe alma. Marius Wirtherle söylediği gibi $ scope.sts [0] $ http.get işlevi içinde

Bütün bu

.status:

Kişisel Sorun muhtemelen olmasıdır

Bu

nihayet yaptım nasıl $ http İsteği, zaman uyumsuz olarak yürütülür. bunu yaptığında Yani Talep henüz bitmedi $

bu Resolve için $ http Promise beklemek kullanmak gibi kodunuzu değiştirin

window.alert:

$scope.show = function(id){ 
    $http.get('http://10.0.203.73/WS/ws.php/tipusactius/edita/elimina/' + 

kimliği + '.json' .then (işlev (yanıt) {// success callback (.success kullanımdan kaldırıldı) $ scope.sts = response.data.status; ($ scope.sts == 'IN_USE') { $ window. uyarısı ('Aquest atribut no es pot eliminar perque és en ús'); } }, işlev (yanıt) {// hata çağrısı ack $ window.alert (response.statusText); }); https://docs.angularjs.org/api/ng/service/ $ http

cevap

1

Probleminiz $ http isteği uyumsuz yürütülür muhtemelen geçerli: }

Dahası $ http okuma. Bu yüzden, $ penceresini yaptığınızda Talebi tamamlanmadı.Ayrıca seni çok bir .status var (https://docs.angularjs.org/api/ng/service/$http

:

$scope.show = function(id){ 
    $http.get('http://10.0.203.73/WS/ws.php/tipusactius/edita/elimina/' + id + '.json') 
    .then(function(response){ // success callback (.success is deprecated) 
    $scope.sts = response.data.status; 
    if ($scope.sts == 'IN_USE') { 
     $window.alert('Aquest atribut no es pot eliminar perque és en ús'); 
    } 
    }, function(response){ //error callback 
    $window.alert(response.statusText); 
    }); 
} 

ayrıntılı $ http okuma: Böyle uyarı

değiştirmek kodunuzu Çöz için $ http Promise beklemek kullanmak kodunuzda. $scope.sts = data.status; satırından ve if($scope.sts.status == ...) numaralı telefondan. Bu nedenle temel olarak data.status.status)

+0

Çözdüğüm problemin bir kısmı, bahsettiğiniz şeydi. – proktovief

İlgili konular