【问题标题】:Build Select List with a PDO query as choseable options使用 PDO 查询作为可选选项构建选择列表
【发布时间】:2014-11-30 01:48:52
【问题描述】:

我想创建一个选择列表,其中列出来自查询的项目/信息。每次我更新数据库时都必须更新选择列表,所以我必须使用 JQuery。我从来没有使用过 JSON,所以我真的很糟糕,也没有经验。

我想为选择列表中的每个选项输出“电子邮件”和“余额”字段,如下所示:

<option>john@doe.com - 120020</option>
<option>john2@doe.com - 130020</option>

我的 HTML 选择列表:

<select id="assignaccount" name="assignaccount" class="form-control select">
    <option>Database</option>
    <option>Option 2</option>
    <option>Option 3</option>
    <option>Option 4</option>
    <option>Option 5</option>
</select>

我的 Ajax 请求:

function buildSelectList(){
    $.ajax({
        url: "/database/accounts.php",
        type: "GET",
        success: function (response) {
            var data = JSON.parse(response);
            alert(data.id);
        },
        dataType: "json"
    });
}

我的“数据库/accounts.php”

function selectPlayerless(PDO $db){
    $stmt = $db->prepare("SELECT * FROM Accounts WHERE id NOT IN (SELECT accountId FROM PlayerCards)");
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo json_encode($result);
}

我的问题: 我不知道我应该如何以这种方式实现 Ajax 请求,它遍历所有行并将必要的字段作为选项添加到选择字段中。

【问题讨论】:

  • 附注 - 使用 dataType: "json"var data = JSON.parse(response);,不能同时使用。
  • 所以您只需要帮助将response 中的success: function (response) 添加到&lt;select id="assignaccount" name="assignaccount" class="form-control select"&gt; 吗?
  • 没错,只要 database/accounts.php 也可以。谢谢你的旁注,改变了。
  • 只需创建一个 ajax 请求,该请求也会发送您在选择框中选择的请求,该请求也必须包含在请求中
  • Ghost 我想用我通过上面的 SQL 查询选择的信息来填充这个选择列表。我想你误解了我的问题。

标签: javascript php jquery json pdo


【解决方案1】:

首先,由于您明确输入了dataType: "json",因此您不需要JSON.parse

其次,在收到服务器的响应后构建标记:

粗略的例子:

$.ajax({
    url: "/database/accounts.php",
    type: "GET",
    success: function (response) {
        var opt = '';
        // loop the response
        $.each(response, function(i, e){
            // just use your column names, these are just an example, but you get the idea
            opt += '<option value="'+e.id+'">'+e.email+'</option>';
        });
        // append the markup to that select box
        $('select#whatever_this_selectbox_is').html(opt);
    },
    dataType: "json"
});

旁注:我建议使用$result = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);,因为你真的不需要数字索引中的值。

【讨论】:

  • 致命错误:未定义的类常量 'FETCH_ALL'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多