首页 > 解决方案 > 使用 jQuery ajax() 将数据发送到 php 页面时未设置会话变量

问题描述

我有一个 jQuery,它使用 jQuery ajax() 方法将单击按钮的数据发送到名为“follow_button”的 php 页面。'follow_button' 页面存储从 jQuery 获得的数据,将其存储在一个变量中,然后与单击它的用户 ID 一起执行对数据库的插入操作。现在,问题是,我需要使用会话变量提取用户的 user_id。但在任何情况下,页面都无法提取会话变量。结果发送的数据存储在数据库中,但 user_id 设置为 0,因为会话变量不起作用。这是“follow_button.php”页面的摘录:

follow_button.php

<?php
session_start();
/* if(isset($_SESSION))
    echo "1.session set<br>";
else
    echo "1.session not set<br>"; */

include_once "includes/db.php";
include_once "includes/functions.php";
// include_once "includes/init.php";
// include_once "includes/insert_school_name.php";
/* if(isset($_SESSION))
    echo "2.session set<br>";
else
    echo "2.session not set<br>";


var_dump($_SESSION);
var_dump($_POST); */
$name = $_POST['name'];
$email = $_SESSION['email'];
$id = get_id($email);
insert_school($id, $name);
?>

注意:函数 get_id() 和 insert_school() 工作正常。还需要提到的是,包含按钮的页面是一个 wordpress 页面。
成功后,jQuery 脚本将按钮的文本从“关注”更改为“关注”。单击按钮时,文本会发生变化,即调用返回成功状态。但是当我检查数据库时,$name 变量插入了正确的值,但 $id 变量插入了值为 0。
会话变量也适用于所有页面,即使是包含按钮的 wordpress 页面。它只是不适用于这个特定的页面'follow_button.php'。
我该如何解决这个问题?

编辑:添加了 get_id() 和 insert_school() 函数

get_id()

function get_id($email) {
global $conn;

$sql = "SELECT id FROM member WHERE email = '$email'";

$result = $conn->query($sql);

$row = $result->fetch_assoc();

return $row["id"];
}

插入学校()

function insert_school($id, $name) {
    global $conn;

    $sql = "INSERT INTO user_schools (user_id, school_name)
    VALUES ('$id', '$name')";

    $conn->query($sql);
}

标签: phpjqueryajax

解决方案


推荐阅读