首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery和Ajax返回不同的数据集,而不是创建单独的ajax调用。

jQuery和Ajax返回不同的数据集,而不是创建单独的ajax调用。
EN

Stack Overflow用户
提问于 2015-09-22 15:55:13
回答 2查看 45关注 0票数 2

我有以下jQuery setInterval函数,可以使用ajax以30秒的间隔从php文件重新加载数据。为了获取3位信息,我正在运行3个不同的ajax调用。有没有办法将3个独立的ajax调用合并到一个调用中?其中2个调用的php文件返回来自会话的json数据,而另一个调用只返回一个数字以显示未读消息的数量。

下面是我目前拥有的jQuery代码:

代码语言:javascript
复制
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文件所做的工作:

代码语言:javascript
复制
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'];
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-22 16:19:17

我们的PHP可以在一个调用中返回所有数据,如下所示:

代码语言:javascript
复制
<?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));

?>

您可以像以前那样对每个数据进行迭代:

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2015-09-22 16:17:28

只需创建一个端点,该端点在一个调用中执行所有操作:

我不知道php,但是创建一个关联数组并将数据分配给它。

代码语言:javascript
复制
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响应函数中,您可以访问数据并执行操作:

代码语言:javascript
复制
function(data){
  console.log(data.message_overviews);
  console.log(data.auth_messages);
  console.log(data.messages_unread_count);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32721437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档