我有一个JSON表,每行都有一个按钮,当你点击它时调用一个传递元素ID的Web服务。 Web服务试图从数据库中删除元素,如果它可以被删除,返回一个简单的带有'at status'状态的JSON和两个可能的值'ERASED'(如果删除)或'IN_USE'(如果不是)。当我点击按钮时,Web服务回复正常(实际上是'IN_USE')。但是,当我尝试读取显示消息的“状态”值(取决于它是'IN_USE'还是'ERASED')时,它会返回“未定义”并且不知道为什么。我一直在做一些技巧,但仍然不起作用。我也做了与纤薄框架2.解析JSON角
控制器(只是烦恼的功能)的Web服务:
$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);
});
:
$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');
}
}
有Web服务(它与纤细的框架2完成)
Web服务运行正常,但当我尝试检查状态值时,控制台上出现未定义的状态。
解决:
有在这种情况下,两个错误: 1的功能可按是异步的,所以即使我从服务器获取的消息可以仍然被“未定义” 2,我是不是适当地缓存“状态”值。
这是我做的最后: $ scope.sts [0] .STATUS
这一切$ http.get函数内部马吕斯Wirtherle说:
你的问题可能是$ http请求异步执行 。所以,当你做的请求还没有结束的 $ window.alert
修改代码,这样使用等待$ 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ésenús'); } },function(response){// error callb ack $ window.alert(response.statusText); }); }
进一步阅读$ HTTP: https://docs.angularjs.org/api/ng/service/ $ HTTP
我解决了,问题的一部分是你所提到的 – proktovief