我目前正在开发一个迷你项目,我有2个mysql数据库表(问题和答案)。答案表包含questionid。我在ajax调用中使用以下查询选择了一个问题和4个相关答案,它有效但不确定它是否正确?
然后我将这个传回作为一个数组显示在我的网页上。问题是显示但不是答案,但我可以在控制台窗口的响应中看到值存在。我想也许是因为问题和答案都在同一个数组中?
非常感谢任何帮助。
的PHP / mysqli的:
$sql= 'SELECT question FROM questions where difficulty = 1
UNION ALL
SELECT answer FROM answers a right join questions q on q.id = a.questionid WHERE q.difficulty = 1';
$result = $mysqli->query($sql) or die($mysqli->error.__LINE__);
if($result->num_rows > 0){
$array = array(); // initialize
while($row = $result->fetch_array(MYSQLI_BOTH)){
$array[] = array(
'question' => $row[0],
'answer' => $row[1],
'answer' => $row[2],
'answer' => $row[3],
'answer' => $row[4]
);
}
}
header('Content-Type: application/json',true);
echo json_encode($array);
$result->free();
$mysqli->close();
Ajax成功回复:
function response(json){
console.log(json);
var quest = json[0].question;
var ans1 = json[1].question;
var ans2 = json[2].question;
var ans3 = json[3].question;
var ans4 = json[4].question;
$("#questionBox").html('<h2>Q: ' + quest);
$("#answerBox").html('<h2>Q: ' + ans1);
}
Ajax响应:
[{"question":"Is this an easy question?","answer":null},
{"question":"Yes","answer":null},
{"question":"No","answer":null},
{"question":"Maybe","answer":null},
{"question":"Who Knows","answer":null}]
直接从浏览器回复:
[{"question":"Is this an easy question?","answer":null},
{"question":"Yes","answer":null},
{"question":"No","answer":null},
{"question":"Maybe","answer":null},
{"question":"Who Knows","answer":null}]
答案 0 :(得分:0)
var ans1 = json[1].question;
不应该是:
var ans1 = json[0].answer;
此外,用于创建数组的PHP代码也具有相同的answer
键4次,我想这意味着即使你已经设置了4个,你在响应中只得到1个答案。您可能希望将其更改为:
$array[] = array(
'question' => $row[0],
'answer1' => $row[1],
'answer2' => $row[2],
'answer3' => $row[3],
'answer4' => $row[4]
);
然后在javascript:
var ans1 = json[0].answer1;
var ans2 = json[0].answer2;
等