如何使用 jquery ajax 向 PHP 页面发送异步请求

how to send asynchronous request to php page using jquery ajax

本文关键字:异步 请求 PHP 何使用 jquery ajax      更新时间:2023-09-26

我是Web开发的新手,为大学项目创建一种社交网站。我想在每次用户数据库中有新消息时在消息菜单中更新消息计数(例如主页上的 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);
});

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

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

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

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

然后,从 PHP 页面传回的任何 HTML 都将在 data 调用中到达。 如果是 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>

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

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