如果JSON数据为空则发出警报 - 代码无效

时间:2016-06-11 08:54:11

标签: javascript angularjs json

我想检查json数据是否为空。

如果json为空,我想提醒orders Not Found。 如果它不为空,我想提醒orders found

如果用户未登录,则其本地存储中不会有任何令牌。因此,当浏览器请求API URL时,他将收到500错误。然后我想提醒failed以及failed status reason

我的开发生病了,所以试了试我的自己。它不太顺利。

尝试下面的代码,完全没有工作。

<script>             
$http.get("http://localhost.com/activeorders/?format=json",{
            headers: {'Authorization': 'Token '+ localStorage.getItem("token")}})
                .success(function(response) {

                    if(response=="[]")
                    { 

                        alert(" orders NOT found");


                    }
                    else
                    {   

                        alert("orders  found"); 
                    }

                    .error(function(response,status) {

        alert("failed");
    alert(status);
                }
                 return ;
            }); 

</script>

任何帮助都会感激不尽。

3 个答案:

答案 0 :(得分:2)

例如,如果要检查JS对象或JSON是否为空({}),则对象为response
Object.keys(response).length === 0 && response.constructor === Object

答案 1 :(得分:2)

如果您尝试使用 Angular js ,那么您可以使用回调尝试以下代码:

 $http({
      method: 'GET',
      url: 'http://localhost.com/activeorders/?format=json',
      headers: {
          'Authorization': 'Token '+ localStorage.getItem('token')
      }
    }).then(function successCallback(response){ // this callback will be called asynchronously when the response is available
          if (response.data.length == 0){
              console.log("orders NOT found")
          }
         // or if you just return an array json by php for example
          //if (response.length == 0) {
              //console.log("orders NOT found")
          //}           
      }, function errorCallback(response){ // called asynchronously if an error occurs or server returns response with an error status.
          if (response){
             alert("failed");
          }
      });

如果您使用的是外部文件.json类型,则可以尝试:

menuApp.controller("dynamicMenuController", function($scope, $http) {
$http.get('config/menu.json').success(function(data) { 
    console.log("success!");
    if(data.length == 0){
        alert('empty');
    }
    else {alert('some here!')}
});

如果您的json位于另一个域中,则为外部域。在这种情况下,我建议你看一下JSONP,这里有一个例子http://fdietz.github.io/recipes-with-angular-js//consuming-external-services/consuming-jsonp-apis.html

 $http.jsonp('http://teckstack.com/api/get_recent_posts/?callback=JSON_CALLBACK').success(function (data) {
    console.log("success callback");
    if(data.length == 0){
       alert('empty');
    } // response data 
}).error(function (data) {
    console.log("failed callback");
});

答案 2 :(得分:0)

尝试

if( Object.keys(JSON.parse(response)).length == 0 ){
  alert("err")
}