即使没有找到记录,也返回所有参数

时间:2017-06-13 17:51:52

标签: javascript php jquery mysql

如何返回服务器中没有数据的参数?

将多个参数发送到PHP脚本,尝试返回每个参数的数据:

Random

cntnum将如下所示:“NUM111”,“NUM222”,“NUM333”

在服务器上,containerCheck.php看起来像这样:

 var cntnum = $('#cntnum').val().trim().toUpperCase().split("\n");

 $.post('containerCheck.php', {cntnum:cntnum}, function(data)
 {
   var obj = JSON.parse(data);
   $('#content').empty();
   var htmlToInsert = obj.map(function(item)
   {
     return '<tr><td>'+item.CONTAINER_NUMBER+'</td><td>'+item.LOCATION+'</td></tr>';
   });
   $('#content').html(htmlToInsert);
 });

查询使用从JavaScript传递的所有3个(或更多)参数运行。

问题在于:如果其中一个参数没有返回任何数据,PHP将只返回其背后有数据的值。

因此容器NUM111和NUM222可能包含数据,但NUM333可能没有。我上面使用的代码只显示2条记录,即使3条已发送到服务器。

无论背后是否有数据,我都需要能够显示所有容器。

修改

如果用户输入了NUM111,NUM222,NUM333,并且只有前2个输入了表格中的任何数据,我希望能够显示哪些数据包含数据:

 <?PHP
   $containers = $_POST['cntnum']; 

   $containersArray = preg_replace('/\n$/','',preg_replace('/^\n/','',preg_replace('/[\r\n]+/',"\n",$containers)));

   $select = "SELECT CONTAINER_NUMBER, LOCATION FROM INVENTORY WHERE CONTAINER_NUMBER IN ('".implode("','",$containersArray)."')";
   $query = mysqli_query($dbc, $select) or die(mysqli_error());

   $out = array(); 
   while($row = $query->fetch_assoc())
   {
     $out[] = $row;
   }
   echo json_encode($out);
   mysqli_free_result($query);  
 ?>

1 个答案:

答案 0 :(得分:1)

将其分为两部分:

  1. 准备从服务器返回的数据
  2. 渲染

    你会得到类似的东西:

    var results = [];
      obj.forEach(function(item) {
         results[item.CONTAINER_NUMBER] = item.LOCATION
      });
    
      var html = cntnum.map(function(container) {
        var num = item.CONTAINER_NUMBER
        return '<tr><td>'+num+'</td><td>'+results[num]+'</td></tr>'
      });