0

每次您从<select>标签更改选择时,我都希望使用 ajax 动态创建复选框,请参阅下面的屏幕截图以了解相关的表单部分:

片段

注意:队列”下的复选框应该是动态的。

目前,当您更改Team的值时,它会获取团队名称(在本例中为“Test”),然后使用 ajax (POST) 返回该团队的 Manager 名称。

我想要它做的是查找另一个表,其中包含与每个团队相关的“队列”列表;我将在“ Manager Name ”字段的标签中添加一个“onchange”属性。

下面是我目前用来完成Team => Manager Name动态填充的代码:

<script>
        window.onload = function() {
            getManager($("#team").val());       
        }

        function getManager(team) {
            $.ajax({
                type: "POST",
                url: "getManager.php",
                data: {team:team}
            }).done(function( manager ) {
                $("#manager_name").val(manager);
            });
        }
</script>

这是getManager.php它使用的文件:

<?php

require("../../database/db.php");

$mysqli = new db("nab_reporting");

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$team=$mysqli->real_escape_string($_POST['team']);

$result = $mysqli->query("SELECT manager_name FROM team WHERE teamname = '".$team."'");

$row = $result->fetch_assoc();

echo $row['manager_name'];

mysqli_close($mysqli);

?> 

请记住,上述方法有效;我现在需要一种方法来使用将使用 ajax(类似于上面)的Manager Nameonchange字段的属性,将当前在该字段中的值(在本例中为 Kane Charles)传递给另一个 php 页面,并将返回一个结果集(数组或 JSON 可能?)包含数据库中与该团队名称匹配的所有队列的列表。

以下是每个不同位的 html 代码:

团队

<select name="team" id="team" required="required" onchange="getManager(this.value)">
               <?php 
                    include(__DIR__ . "/../../database/db.php");
                    $db = new db("nab_reporting");
                    $result = $db->query("SELECT teamname FROM team");
                    while ($row = $result->fetch_assoc()) {
                        echo "
                        <option value=\"" . $row['teamname'] . "\">" . $row['teamname'] . "</option>
                        ";
                    }
                    $db->close();
                 ?>
</select>

经理姓名

<input type="text" name="manager_name" id="manager_name" required="required" onchange="getQueues(this.value)">

队列

<label>
    Queues
</label>
<div id="queue_options">
    <!-- queues dynamically created here -->
</div>

我需要queue-options删除 的内容并将其重置为仅与当前团队关联的队列;我没有对 ajax 做很多事情,因此我在这里发帖。

4

1 回答 1

2

此修订版应符合您的要求

PHP

// make an array to hold the queues
$data = Array();

// Fetch the rows of all the queues
$res = $mysqli->query("SELECT * FROM the_queue_table WHERE manager='" . $_GET["manager"] . "'");

// loop through all the rows and push the queues into the data array
while(($row = mysql_fetch_object($res)) !== false)
{
    array_push($data, $row->queue);
}

// return the data array as a json object
echo json_encode($data);

JavaScript

// get the page and send the manager name to filter with
$.get("file.php?manager=" + managerName, function(page)
{
    // parse the json into an object
    var data = $.parseJSON(page);

    // remove existing checkboxes
    $("#queue_options").children().remove();

    // add checkboxes to the div
    for (var item in data){
        $("#queue_options").append("<input type=\"checkbox\" value=\"" + item + "\" />" + item + "<br />");
    }
});
于 2013-07-22T05:53:30.457 回答