データベースからデータを取得しようとしていますが、バッチ番号にデータベース内のレコードが1つしかないのに、同じバッチ番号に対してより多くの在庫があります。バッチ番号でドロップダウンを表示しなくなります.Jsonなしで同じコードを実行すると、すべてのバッチ番号が表示されますが、私は他のデータまた、私が間違ってやっていることを親切に助けてくれるdbから、他の部署にも表示されます。ajaxを使用している複数のデータで、jsonが機能しない
jQueryの/アヤックス
<script>
function getBatch(id) {
var product_id = jQuery('#product'+id).val();
jQuery.ajax({
type: 'POST',
url: 'get_Batch.php',
data: { product_id: product_id },
dataType : 'JSON',
success: function(data) {
jQuery('#batch'+id).html(data.batch_option);
jQuery('#available_qty'+id).val(data.avaliable_quantity);
}
});
}
</script>
PHP
<?php
include('includes/config.php');
if(isset($_POST['product_id'])) :
$product_id = $_POST['product_id'];
$get_batch = mysqli_query($conn, "Select * from products JOIN products_stock ON products.p_id='$product_id' AND products.p_id=products_stock.p_id");
if(mysqli_num_rows($get_batch) > 0) :
header('Content-Type: application/json');
while($batch = mysqli_fetch_object($get_batch)) :
$data = [
'batch_option' => "<option value=".$batch -> batch_no.">
".$batch -> batch_no."
</option>",
'avaliable_quantity' => $batch -> p_available
];
echo json_encode($data);
endwhile;
else :
header('Content-Type: application/json');
$data = [
'batch_option' => "<option value='No batch found'> No batch found </option>",
'avaliable_quantity' => 'Not avaliable'
];
echo json_encode($data);
endif;
endif;
?>
私はこのように行う場合には、
ドロップダウン内の1つのバッチ番号に対するすべてのレコードを表示します<?php
include('includes/config.php');
if(isset($_POST['product_id'])) :
$product_id = $_POST['product_id'];
$get_batch = mysqli_query($conn, "Select * from products JOIN products_stock ON products.p_id='$product_id' AND products.p_id=products_stock.p_id");
if(mysqli_num_rows($get_batch) > 0) :
while($batch = mysqli_fetch_object($get_batch)) :
?> <option value="<?php echo $batch -> id; ?>"><?php echo $batch -> id; ?></option> <?php
endwhile;
endif;
endif;
?>
whileループの後に 'echo json_encode($ data);'を移動する必要があります。ループの中で、それは無効な複数のjson符号化データをエコーしています。 '$ data = ...'を '$ data [] = ... 'に変更する必要もあります – Sean
JavaScriptのjsonオブジェクトをループして、返されたすべてのHTMLデータを取得する必要があります – Sean