我从数据库中提取所有符合条件的数据。
<?php
include ('../connection/db.php');
$time = date('U');
$query = mysqli_query($connection, "SELECT * FROM `mess1` WHERE(`time` - '$time' <= 3600000)");
$result = $query or die(mysqli_error());
while($count = mysqli_fetch_all($result))
{
echo json_encode($count);
}
mysqli_close($connection);
?>
这是一个问题:它mysqli_fetch_all($result)返回一个关联数组,但我需要在另一个函数中以与返回数据相同的形式接收请求返回的数据,例如$.getJSON(见图),告诉我该怎么做?
function data() {
$.ajax({
type: "POST",
url: "data.php",
success: function(someData){
callback(someData);
},
error: function() {
alert('Error');
}
});
}
data();
function callback(respond) {
//some operations with data
}
function data() {
$.ajax({
type: "POST",
url: "php/data.php",
dataType: 'json',
success: function(someData) {
callback(someData);
},
error: function() {
alert('Eror!');
}
});
}
var exists = [];
data();
function callback(respond) {
var timeNow = Date.now();
for (var i = 0; i < respond.length; i++) {
var data = respond[i];
if (exists.indexOf(data.id) != -1) continue;
var timeInMessage = data.time * 1000;
var diff_time = (timeNow - timeInMessage);
if (diff_time <= 3600000) {
var rowClone = $('.mess_hide').clone().removeClass('mess_hide');
var newDate = new Date(timeInMessage);
var dateArray = [newDate.getHours(), newDate.getMinutes(), newDate.getSeconds()]
var res = dateArray.map(function(x) {
return x < 10 ? "0" + x : x;
}).join(":");
$('#messages').append(rowClone);
$('.time', rowClone).html(res);
$('.name', rowClone).html(data.user);
$('.message', rowClone).html(smile(data.message));
$('.scroller').scrollTop($('#messages').height());
exists.push(data.id);
}
}
setTimeout(function() {
data();
}, 1000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


您对 json 进行操作并将其发送回 ajax 回调,但您没有在其中收到 json。将接收到的数据的格式添加到js中:
..并且应该立即工作。
http://api.jquery.com/jQuery.ajax/
好吧,那么您需要先形成一个对象数组,然后对其进行 json 编码。