1

我是网络开发的新手,为大学项目创建了一种社交网站。每当数据库中有用户的新消息时,我想在消息菜单中包含更新消息计数(如主页上的 facebook 消息菜单)

但是学习 ajax 令人沮丧,但是在网上搜索并阅读了一些书籍中的一些主题之后,我找到了解决方案,我可以在主页的 js 文件中进行 $ajax 调用并发送数据('name'=>'user')存储在我创建的 javascript cookie 中的数据用户登录后将主页加载到一个 php 文件,该文件将在数据库中的 recent_msg 表中搜索,以获取登录用户的最新消息(如果有的话)在获取 php 文件后将创建带有代码片段和另一个的 html 文件jquery 代码会将该片段从文件附加到消息列表菜单中。

PHP部分不是问题,但我如何使用jquery ajax api将用户名发送到php文件,这是我认为我可以应用的代码,但我怀疑这是否是正确的方法

$(document).ready(function{

setInterval ( function()
{
    var usr = getCookie("name");
    $.ajax ( {
        url: '/phpScripts/recent_msg.php',
        type: 'POST',
        data: usr,
        success: function(data){

             }
        } );
},10);
});

代码中成功函数的目的是什么?

4

3 回答 3

5

data需要采用对象/键值对的形式(编辑:或者如果是字符串,则作为有效的查询字符串)。 data: { name: usr }. 但是,由于它位于 cookie 中,因此您的 PHP 页面将可以直接访问该 cookie。让您的会话 cookie 告诉 PHP 页面用户是谁而不是依靠 AJAX 调用来告诉 PHP 页面它是谁更安全。

http://php.net/manual/en/features.cookies.php

所以我会data完全放弃你的 AJAX 调用,在你的 PHP 页面中,使用$_COOKIE["name:"]

data然后从 PHP 页面传回的任何 HTML 都将在调用中到达。如果它是 HTML,那么只需将其添加到您的 HTML 到某个消息 div 中,例如。

<div id="recent-messages"></div>

<script type="text/javascript">
$(document).ready(function{

setInterval ( function()
{
    var usr = getCookie("name");
    $.ajax ( {
        url: '/phpScripts/recent_msg.php',
        type: 'POST',
        data: usr,
        success: function(data){
                $('#recent-messages').html(data);
             }
        } );
},10);
});
</script>
于 2013-09-19T12:19:24.220 回答
1

每当您的 ajax 调用成功完成时,就会执行成功函数。这意味着该页面确实存在,并且该页面上没有发生服务器端错误。变量数据将包含从服务器/phpScripts/recent_msg.php 上的页面返回的任何信息。通常这是 json 或 xml,但这完全取决于您对 recent_msg.php 的实现。

于 2013-09-19T12:22:59.937 回答
1

如果用户必须登录,则意味着您必须创建一个会话。在这种情况下,您可以将登录用户的信息(例如他们的姓名)$_SESSION存储在服务器上,而无需将其存储为 cookie。由于$_SESSION已经在服务器上,因此在任何情况下都无需通过 ajax 发送该数据。

于 2013-09-19T12:24:43.223 回答