如何使用Ajax和json填充mysql中的select

时间:2018-03-20 09:04:46

标签: php jquery mysql json ajax

我在HTML中有一个空的选择,我希望通过数据库填充。

我有一个打开Modal并传递id的按钮。使用该ID,我从数据库中获取数据并填写一家公司的所有表单字段。但是,公司可以拥有多名员工,因此我希望填写一份选项,以便显示与公司具有相同ID的所有员工。

例如:

公司ID为43,我使用此ID填写所有表单字段(名称,位置等)并从数据库中获取数据。 在员工表中,有3名员工将ID 43作为FK,我们将其命名为hans,max和peter。 现在我想填充一个显示其中所有3个的选择,以便用户可以选择其中一个,并根据该选择填充一个空表单,以便可以对其进行编辑。

我假设这涉及一个循环,但我不知道该怎么做。不确定它是否相关,但我所有的mysqli调用都使用prepare,因为我读过这个更安全。

到目前为止我尝试过的循环是这样的,但它不起作用。我不确定它是否是循环不起作用或者我是否试图填充选择错误。

这是在select中,并且所有输入字段都已填充。

while ($row = $result->fetch_assoc()){
$prename= $row['prename'];
$surname= $row['surname'];

$users_arr[] = array("prename" => $prename, "surname" => $surname);
}

然后我按如下方式返回数据

echo json_encode(array('users_arr'=>$users_arr));

并尝试在AJAX成功中填充select

$.each(data.users_arr, function(key, val){ 
$("#contact_persons").append('<option id="' + data.prename + '">' + data.surname + '</option>');
});

由于

编辑:完整的Ajax调用:

$.ajax({
            url: url,
            data: data,
            dataType: 'json',
            cache: false,
            type: "POST",    
            error: function () {


                    $('#alertdone').removeClass('hidden');



        },
        //if ajax call is successful populate form fields and hide error message
        success: function (data) {


            //hide error message
            $('#alertdone').addClass('hidden');


                $.each(data.users_arr, function(key, val){ 
                $("#contact_persons").append('<option id="' + data.prename + '">' + data.surname + '</option>');
                });


            }


        });
    });

1 个答案:

答案 0 :(得分:1)

在您的AJAX成功中,您可以尝试

var d = $.parseJSON(data);
$.each(d.users_arr, function(index, element) {
$("#contact_persons").append('<option id="' + element.prename + '">' + element.surname + '</option>');
});

修改

$.ajax({
            url: url,
            data: data,
            cache: false,
            type: "POST",    
            error: function () {
                    $('#alertdone').removeClass('hidden');
             },
            success: function (data) {
             //hide error message
            $('#alertdone').addClass('hidden');
            var d = $.parseJSON(data);
            $.each(d.users_arr, function(index, element) {
            $("#contact_persons").append('<option id="' + element.prename           + '">' + element.surname + '</option>');
            });
            }
        });
    });