我想创建一个选择列表,列出查询中的项目/信息。每次我更新数据库时都需要更新选择列表,所以我必须使用JQuery。我从来没有使用过JSON,所以我真的很糟糕而且没有经验。
我想为选择列表中的每个选项输出字段“email”和“balance”,如下所示:
<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>
我的Ajaxrequest:
function buildSelectList(){
$.ajax({
url: "/database/accounts.php",
type: "GET",
success: function (response) {
var data = JSON.parse(response);
alert(data.id);
},
dataType: "json"
});
}
我的“database / 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请求,它通过所有行循环并将必要的字段作为选项添加到选择字段中。
答案 0 :(得分: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->fetchAll(PDO::FETCH_ASSOC);
,因为你真的不需要数字索引中的值。