2017-06-13 31 views
0

試圖在這裏找到最佳解決方案...即使沒有找到記錄,也可以返回所有參數

如何返回服務器中沒有數據的參數?

,試圖爲每個參數這裏返回的數據發送多個參數到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); 
}); 

的cntnum看起來就像這樣:「NUM111」,「NUM222」,「NUM333」

在服務器上,containerCheck.php看起來是這樣的:

<?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); 
?> 

查詢從JavaScript的獲得通過,所有的3(​​或更多)的參數運行。

這是問題:如果其中一個參數沒有返回任何數據,PHP將只返回其後面有數據的值。

因此,容器NUM111和NUM222可能有數據,但NUM333可能沒有。即使3被髮送到服務器,我上面使用的代碼將只顯示2條記錄。

我需要能夠顯示所有的容器,而不管它後面沒有數據。

我希望這是有道理的。

對解決方案開放。先謝謝你。

編輯

如果用戶輸入NUM111,NUM222,NUM333只有第2例表中的任何數據,我希望能夠顯示哪些有數據:

************************* 
* CONTAINER * LOCATION * 
************************* 
* NUM111 * NEW YORK * 
************************* 
* NUM222 * DELEWARE * 
************************* 
* NUM333 * NOT FOUND * 
************************* 

回答

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>' 
        }); 
    
相關問題