我的PHP查询运行正常(基于对firebug的响应),但它给我的结果是我的直接页面上的[object Object]
。所以我猜我的问题出在我的javascript上,因为在响应选项卡下的firebug上它检索我数据库中的所有数据
这是我的javascript
function AjaxRetrieve()
{
var rid = document.getElementById('trg').value,
data = {chat: uid, rid: rid, name: user};
$.ajax({
url: "includes/getChat.php",
type: "GET",
data: data,
dataType: 'json',
success: function(result){
var res = $([]);
$.each(result[0], function(key, value) {
res = res.add($('<div />', {text : value}));
});
$("#clog").html(res);
}
});
}
请求的php脚本是
$sql7 = "SELECT message_content, username , message_time, recipient FROM ".$tbpre."chat_conversation WHERE msgid=:chat";
$stmt7=$con3->prepare($sql7);
$stmt7->bindValue( 'chat', $msgd, PDO::PARAM_STR);
$stmt7->execute();
$message_query = $stmt7;
$json = array();
if($message_query->rowCount() > 0) {
while($message_array = $stmt7->fetchAll(PDO::FETCH_ASSOC)) {
$json[] = $message_array;
}
echo json_encode($json);
}
我对JQUERY / AJAX / Javascript还不是很熟悉,所以我真的不确定我所做的是否正确我只是将我的一些代码基于jquery的文档和一些 我们的成员在这里提出的建议
答案 0 :(得分:1)
如下所示更改您的成功回调,您有一系列对象。
success: function(result){
var container = $("#clog");
$.each(result, function(i, message) {
$.each(message, function(key, value) {
container.append($('<div />').html(key + ':' + value));
});
});
}
修改强> 的
您必须在循环中将fetchAll
更改为fetch
。
while($message_array = $stmt7->fetch(PDO::FETCH_ASSOC)) {
$json[] = $message_array;
}
echo json_encode($json);
或者只使用fetchAll
而不使用while循环:
$json = $stmt7->fetch(PDO::FETCH_ASSOC);
echo json_encode($json);
答案 1 :(得分:1)
构建json数据的方式是错误的,请尝试这种方式
$json =array();
$i=0;
if($message_query->rowCount() > 0) {
while($message_array = $stmt7->fetchAll(PDO::FETCH_ASSOC)) {
$json[$i]= $message_array;
$i++;
}
echo json_encode($json);
}
快乐编码:)