我有以下jQuery setInterval函数,使用php文件中的ajax以30秒的间隔重新加载数据。我正在运行3个不同的ajax调用以获取3位信息。有没有办法将3个单独的ajax呼叫合并为一个呼叫?其中2个调用的php文件返回会话中的json数据,另一个调用只返回一个数字来显示未读消息的数量。
这是我目前拥有的jQuery代码:
setInterval(function(){
jQuery.ajax({ url: '/ajax-msgs.php?check=1', type: 'POST', dataType: 'json', cache: 'false', success: function(data) {
var msghtml = '';
jQuery.each(data, function() {
msghtml += '<li><a href="message.php?id=' + this.msg_id + '">' + this.msg_subject + '</a></li>';
});
jQuery("#msg-menu").html(msghtml);
}
});
jQuery.ajax({ url: '/ajax-msgs.php?check=2', type: 'POST', dataType: 'json', cache: 'false', success: function(data) {
jQuery.each(data, function() {
jQuery.jGrowl(this.msg_title, { life: 12000});
});
}
});
jQuery.ajax({ url: '/ajax-msgs.php?check=3', type: 'POST', dataType: 'json', cache: 'false', success: function(data) {
jQuery("#msg-count").text('87');
}
});
}, 30000);
以下是php文件的作用:
if ($_GET['check']==1){
iMapFunction();
print_r(json_encode($_SESSION['message_overviews']));
} elseif ($_GET['check']==2){
iMapFunction();
print_r(json_encode($_SESSION['messages_new_notifications']));
unset($_SESSION['auth_messages_new_notifications']);
} elseif ($_GET['check']==3){
iMapFunction();
echo $_SESSION['messages_unread_count'];
}
答案 0 :(得分:0)
只需创建一个在一次调用中执行所有操作的端点:
我不知道php但是创建一个关联数组并将数据分配给它。
x = {};
x['message_overviews'] = $_SESSION['message_overviews'];
x['auth_messages'] = $_SESSION['auth_messages_new_notifications'];
x['messages_unread_count'] = $_SESSION['messages_unread_count'];
print_r(json_encode(x));
然后在您的jquery响应函数中,您可以访问您的数据并执行操作:
function(data){
console.log(data.message_overviews);
console.log(data.auth_messages);
console.log(data.messages_unread_count);
}
答案 1 :(得分:0)
我们的PHP可以在一个调用中返回所有那个:
<?php
iMapFunction();
$response = array(
'message_overviews' => $_SESSION['message_overviews'],
'messages_new_notifications' => $_SESSION['messages_new_notifications'],
'messages_unread_count' => $_SESSION['messages_unread_count']
);
print_r(json_encode($response));
?>
你可以像以前一样迭代每个数据:
setInterval(function(){
jQuery.ajax({ url: '/ajax-msgs.php', dataType: 'json', cache: 'false', success: function(data) {
var message_overviews = data.message_overviews;
var messages_new_notifications = data.messages_new_notifications;
var messages_unread_count = data.messages_unread_count;
var msghtml = '';
jQuery.each(message_overviews, function() {
msghtml += '<li><a href="message.php?id=' + this.msg_id + '">' + this.msg_subject + '</a></li>';
});
jQuery("#msg-menu").html(msghtml);
jQuery.each(messages_new_notifications, function() {
jQuery.jGrowl(this.msg_title, { life: 12000});
});
jQuery("#msg-count").text(messages_unread_count);
}});
}, 30000);