在成功的ajax上,使用预选的选项值从另一个表创建一个下拉列表选择

时间:2017-10-14 05:15:22

标签: javascript php jquery mysql ajax

对于“修改”模式,我发起对名为ajax的{​​{1}}脚本的php调用,该脚本带来表getSelectedMember.php中的信息(表2)。 tabels

items

<?php require_once 'db_connect.php'; $memberId = $_POST['member_id']; $sql = "SELECT * FROM items WHERE itemID = $memberId"; $query = $connect->query($sql); $result = $query->fetch_assoc(); echo json_encode($result); ?> 在表formulation_fk中是另一个名为items的表中的select选项的值(表1)。

这是'edit.php'的代码:

formulation

我的问题是在更新单个项目时,如何在我的编辑表单中的<form action=" " method="POST"> <div> <label>Name</label> <input type="text"><br> </div> <div> <label>Formulation</label> <select id="editFormulation"> </select> </div> <button type = "submit">Save changes</button> </form> 表格中传递select个选项,其中选择formulation将是option value来自表formulation_fk

这是我的items电话:

ajax

为了澄清我的问题,我们认为要编辑$.ajax({ url: 'getSelectedMember.php', type: 'post', data: { member_id: itemID }, dataType: 'json', success: function(response) { $("#editName").val(response.name); $("#editFormulation").val(response.formulation_fk); $(".editMemberModal").append( ? ? ? ? ? ? ) } }); ,行动流程将是这样的:

  1. 点击“水”的编辑按钮。
  2. Ajax致电Water获取getSelectedMember.php(水)和 name(1)。
  3. 响应时,名称字段将输出'水' 并且Formulation将输出一个下拉列表formulation_fk selectformulation
  4. 如下图所示。 Result

    我一直试图解决它,但我真的很感激任何建议或专家的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

除了formulation_fk表中的items之外,PHP代码还需要返回所有公式的数组。

$memberId = $_POST['member_id']; 

$sql = "SELECT * FROM items WHERE itemID = $memberId";
$query = $connect->query($sql);
$result = $query->fetch_assoc();

$sql = "SELECT * FROM formulation";
$query = $connect->query($sql);
$formulations = array();
while ($row = $query->fetch_assoc()) {
    $formulations[] = $row;
}
$result['formulations'] = $formulations;

echo json_encode($result);

然后,AJAX代码可以在设置其值之前填写<select>

success: function(response) {
    $("#editFormulation").empty(); // Clear out previous value
    $.each(response.formulations, function() {
        $("#editFormulation").append($("<option>", {
            value: this.formulationID,
            text: this.formulation_name
        }));
    });
    $("#editFormulation").val(response.valuation_fk);
    $("#editName").val(response.name);
}