我有一个 AJAX 脚本,我之前使用过该脚本,并且能够从 viewCommentsJson.php
检索数据,例如[{"comments":"Greta"},{"comments":“约翰”}]
。我想知道它是否能够解码返回值以便正确显示它?
提前致谢
Greta
John
Main.php
<a onclick="showUser('.$row['ID'].')" method = "POST" action= "viewCommentsJson.php">Show Comments</a>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("Post","viewCommentsJson.php?q="+str,true);
xmlhttp.send();
}
</script>
viewCommentsJson.php
$com = $_REQUEST["q"];
include 'connectDatabase.php';
//opening sql table
$selected = mysql_select_db("2000",$dbhandle)
or die("Could not select 2000");
$arr = array();
$data = mysql_query("SELECT comments FROM comment WHERE ID = '$com'");
$rows = array();
while($r = mysql_fetch_assoc($data)) {
$rows[] = $r;
}
print json_encode($rows);
最佳答案
既然您不介意 jQuery 解决方案,那么这里是如何完成的
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
$.ajax({
type:'post',
url: 'viewCommentsJson.php',
data:{q:str},
success:function(data)
{
data = $.parseJSON(data);
var response;
$.each(data, function(index, value){
response += value+'<br />';
});
$('#txtHint').html(response);
}
});
}
您可以引用$.ajax和 $.parseJSON了解更多信息。
注意:您的 SELECT comments FROM comment WHERE ID = '$com'
很容易受到 SQL 注入(inject)。至少,您应该先清理所有传入数据,然后再直接在查询中使用它。
关于javascript - 使用Ajax传递Json变量并解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730592/