使用AJAX,PHP和Javascript自动填充输入文本框

时间:2015-08-20 14:36:16

标签: javascript php jquery ajax

我有一个选项框,其中包含使用数据库(phpmyadmin)中的数据生成的选项,数据库如下所示:

Columns: locationID - address - postalcode - place

在选择框之后我有一些输入字段,首先是标准的一些占位符。

我的想法是,如果我选择一个选项,将从数据库中生成并填充字段(contactperson字段除外),这将保持手动。)

为此,我尝试使用AJAX。

我已经做到了:

test.php的

<?php
    //Query the database for the results we want
    $query1 = $conn->query("SELECT * FROM deliveryaddress");

    //Create an array of objects for each returned row
    while($locationArray[] = $query1->fetch_object());

    //Remove the blank entry at end of array
    array_pop($locationArray);
?>

<script>
    $(document).on("change","#select-box").function(){
        var id = $(this).val();
        $.ajax({
            url      : "locationAjax.php",
            data     : {"id":id},
            type     : "POST",
            dataType : "HTML",
            success  : function(data){
                // here you can write code to asign the values to text boxes.
                $(".wrapperDiv").html(data); 
            }
        });
    });
</script>

<div class="wrapperDiv">
    <label for="locationLabel">Locatie</label>
    <select name="locations" id="locationSelectBox" >
        <option>Locatie</option>
        <?php foreach ($locationArray as $option) : ?>
            <option value="<?php echo $option->locationID; ?>"><?php echo $option->locationID; ?></option>
        <?php endforeach; ?>
    </select>

    <label for="address" style="float:left;">Straat/No</label>
    <input type="text" name="address" id="address" placeholder="Straatnaam en nummer" />

    <label for="postalCode">Postcode</label>
    <input type="text" name="postalCode" id="postalCode" placeholder="Postcode" />

    <label for="place">Plaats</label>
    <input type="text" name="place" id="place" placeholder="Plaats" />

    <label for="contactPerson">Contact</label>
    <input type="text" name="contactPerson" id="contactPerson" placeholder="Contactpersoon" />
</div>

locationAjax.php

<?php
    require_once('dbconnection.php'); 
    $locationID = $_POST['id']; 
    $sql = "SELECT * FROM deliveryaddress where id = $locationID"; 
    $result = mysqli_query($conn, $sql); 
?> 
<?php while ($row = mysqli_fetch_assoc($result)) { ?> 
    <input type="text" name="name" value="<?= $row['address'] ?>" /> 
    <input type="text" name="name" value="<?= $row['postalcode'] ?>" /> 
    <input type="text" name="name" value="<?= $row['place'] ?>" /> 
} 
?>
不幸的是,它没有用。

2 个答案:

答案 0 :(得分:1)

而不是这一行: $(文件)。在( “变化”, “#选择框”)。函数(){

试试这个: $(文件)。在( “变化”, “#locationSelectBox”)。函数(){

然后console.log关于ajax“success”函数的数据 并告诉我你得到了什么

答案 1 :(得分:1)

试试这个

echo json_encode(mysqli_fetch_assoc($result));

在脚本循环中,控制台日志数据以查看故障排除的结果
将脚本更改为

$(document).on("change", "#locationSelectBox").function() {
  var id = $(this).val();
  $.ajax({
    url : "locationAjax.php",
    data : {
     "id" : id
    },
    type : "POST",
    dataType : "json",
    success : function(data) {
      console.log(data);
      //
      for (var x in data) {
        $('.address').val(data.address);
        $('.postalcode').val(data.postalcode);
        $('.place').val(data.place);
      }
    }
  });
});

检查控制台日志中的错误