如何检查json数据数组是不是返回值

Posted

技术标签:

【中文标题】如何检查json数据数组是不是返回值【英文标题】:How to check whether json data array returns a value or not如何检查json数据数组是否返回值 【发布时间】:2019-06-20 08:55:26 【问题描述】:

我正在尝试检查数组的对象是否在 jquery 中包含空数据,但它似乎不起作用。

如果传递的值存在于数据库中,则返回数组值,但如果传递的值不正确,则不会返回任何错误。

这是我迄今为止尝试过的:

php 代码

  if(isset($_POST['name']))
  $json = array();
  $id =  trim($_POST['name']);
  $query = "SELECT regiNo, firstName, middleName, lastName FROM student WHERE regiNo = ?";
  $statement = $mysqli->prepare($query);
  $statement->bind_param('s', $id);
  $statement->execute();
  $statement->bind_result($rno, $fname, $mname, $lname);
  while ($statement->fetch())
     $user=array('rno'=>$rno,'fname'=>$fname,'mname'=>$mname,'lname'=>$lname);
      array_push($json,$user);
  
  echo json_encode($json, true);

   

jQuery

<script>
$(document).ready(function()

$(".Student_reg_code").blur(function () 
    var id = $(".Student_reg_code").val();
    var data = 'name=' + id;
    $.ajax(
        type: "POST",
        url: "process.php",
        data: data,
        dataType: 'json',
        success: function (data) 
            if (data) 
                for (var i = 0; i < data.length; i++)  //for each value in the json response
                    $(".Student_reg_code").val(data[i].id);
                    $(".regno").val(data[i].rno);
                    $(".lname").val(data[i].lname);
                    $(".mname").val(data[i].mname);
                    $(".fname").val(data[i].fname);
                 // for

             // if
            else 
              alert('Empty value return for that'+ id);
            

         // success
    ); // ajax
);

);

</script>

【问题讨论】:

你的if 声明总是正确的,只要你从请求中返回一些东西,甚至是一个空数组。如果要检查返回值是否不是空数组,请执行if (Array.isArray(data) &amp;&amp; data.length) @Cue,感谢您的帮助。工作!! 酷。我会发表我的评论作为答案。 【参考方案1】:

因为json_encode 总是返回一个值; data 参数将始终为真。您可以使用以下表达式进一步测试返回的数据:

if (Array.isArray(data) && data.length) 
  ...

Array.isArray 将确定 data 是否真的是一个数组,data.length 将是你判断它是否为空的真假。

javascript 中,真值是在以下情况下转换为真值的值 在Boolean 上下文中评估。所有的价值观都是真实的,除非它们是真实的 定义为虚假(即,false0""nullundefinedNaN)。

【讨论】:

【参考方案2】:

另一种测试数组是否为空的方法是:

if(Array.isArray(data) && typeof data[0] !== 'undefined') 
   console.log("We got an array");

与使用长度属性相比,这有什么优势?好吧,如果您有一个非常大的数组,则长度必须遍历整个数组,而这不会。

【讨论】:

以上是关于如何检查json数据数组是不是返回值的主要内容,如果未能解决你的问题,请参考以下文章

如何检查json返回值是数组还是字典的形式

如果 Json 数组包含特定值,如何检查它?

如何检查 JSON 对象数组是不是包含数组中定义的值?

如何在javascript中执行if语句来检查JSON数组是不是为空?

jQuery Ajax 调用返回 JSON 字符串而不是对象数组

如何在 jQuery 中解析 JSON 数组?