如何返回服务器中没有数据的参数?
将多个参数发送到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);
?>
答案 0 :(得分:1)
将其分为两部分:
渲染
你会得到类似的东西:
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>'
});