我尝试使用AJAX生成带有复选框的名称列表。不幸的是,使用下面的代码,我只返回一个名称,而不是我的数据库中的四个名称。
这是我使用的代码,它位于由AJAX调用的单独的php文件中:
$query = "SELECT id, first_name, last_name, email FROM users WHERE location_id = '{$location_id}' ";
$result = mysqli_query($connection, $query);
if (!$result) {
die("Database query failed: " . mysqli_error($connection));
}
while ($row = mysqli_fetch_array($result)) {
$name = $row['first_name'] . " " . $row['last_name'];
$attendees = '<label><input type="checkbox" name="emp_name[]" id="emp_name[]" value="' . $name . '"> ' . $name . '</label><span style="padding-right: 20px;"></span>';
}
echo json_encode(array('attendees'=>$attendees));
在我尝试这个AJAX调用之前,我在主文档中使用echo
而不是$attendees
进行了相同的查询,并且它运行完美。它返回了所有四个名称旁边的复选框。以下是该代码的摘录:
while ($row = mysqli_fetch_array($result)) {
$name = $row['first_name'] . " " . $row['last_name'];
echo '<label><input type="checkbox" name="emp_name[]" id="emp_name[]" value="' . $name . '"> ' . $name . '</label><span style="padding-right: 20px;"></span>';
}
我对AJAX很新,所以我不确定问题出在哪里。请帮忙!
答案 0 :(得分:1)
每次迭代都会覆盖$attendees
。
$attendees=array();
并在循环内使用$attendees[] = '<la..
$attendees='';
并在循环内使用$attendees .= '<la..
答案 1 :(得分:0)
我认为你不明白json的观点。这是一种编码数据的方法。
您正在尝试传回html标记而不是原始数据,json编码。如果你想这样做,那么丢失json,只需在你的前端代码中添加或替换你从ajax调用中获得的html,使用如下的javascript:
document.getElementById("emplist).innerHTML = ...
否则,你的fetch循环应该更像这样:
while ($row = mysqli_fetch_array($result)) {
$attendees[] = $row;
}
echo json_encode(array('attendees' => $attendees));
无论哪种方式,您仍然需要$与会者[] =所以您将每一行存储到一个数组。