Javascript 使用ajax将会话后变量发送到关系数据库

Javascript 使用ajax将会话后变量发送到关系数据库,javascript,php,jquery,session,Javascript,Php,Jquery,Session,我正在尝试向关系数据库添加一些数据,并希望会话用户id成为该数据库的外键。当用户单击一个按钮时,我想用session\u user\u id和我发布到页面的一些其他信息创建一个数据库条目。我的ajax发布到运行它的php网页(意味着我的所有脚本都在同一个页面上) 我当前收到一个未捕获引用错误:$sess\u user\u id1未定义。jquery正在启动。虽然我希望修复未定义的变量,但总的来说,这似乎不是一种非常直接的方法,并且添加了一系列令人困惑的变量,而我需要的所有变量都已经在我的PHP语

我正在尝试向关系数据库添加一些数据,并希望会话用户id成为该数据库的外键。当用户单击一个按钮时,我想用session\u user\u id和我发布到页面的一些其他信息创建一个数据库条目。我的ajax发布到运行它的php网页(意味着我的所有脚本都在同一个页面上)

我当前收到一个
未捕获引用错误:$sess\u user\u id1未定义
。jquery正在启动。虽然我希望修复未定义的变量,但总的来说,这似乎不是一种非常直接的方法,并且添加了一系列令人困惑的变量,而我需要的所有变量都已经在我的PHP语句中了。是否有任何方法可以触发PHP条目而无需通过ajax并再次定义变量

这是我的php,它位于标题处,与我的JS和HTML位于同一页面上:

<?php
    $markerid = $_POST["id"];
    $name = $_POST["name"];
    $type = $_POST["type"];
    $point = $_POST["point"];
    $lat2 = $_POST["lat"];
    $lng2 = $_POST["lng"];
    $locationdescription = $_POST["locationdescription"];
    $locationsdirections = $_POST["locationdirections"];

    session_start();
    if (!isset($_SESSION['sess_user_id']) || empty($_SESSION['sess_user_id'])) {
        // redirect to your login page
        exit();
    }

    $sess_user_id1 = $_SESSION['sess_user_id'];

    if ((isset($_POST['usid'])) && (isset($_POST['usid']))) {
        $user_id_follow = strip_tags($_POST['usid']);

        echo $user_id_follow;

        $query = "INSERT INTO markerfollowing ( userID, markerID, type )
            VALUES ('$user_id_follow', '$markerid', '$type');";

        $result = mysql_query($query);

        if (!$result) {
            die('Invalid query: ' . mysql_error());
        }

        mysql_close();
    }
?>
这是错误的。如果你不想
data:{usid:123}
at$sess\u user\u id1是123,您应该

data: { usid: <?php echo "$sess_user_id1"; ?>}
数据:{usid:}
在brawser中查看html源代码。我认为有
数据:{usid:$sess_user_id1}
,javascript不理解$sess_user_id1


这是我现在能看到的唯一一个问题,但我不明白您当前的整个任务,不想多说。

哇,这很有效。非常感谢。我应该早些尝试(我想我确实尝试过,但当时有一个不同的bug),但是,如果有人知道一种不用ajax也不用重新定义变量的方法,那就太好了,如果您需要将数据从用户传输到服务器,那么实际情况是您有请求。它可以是GET、POST或其他。它可以是带重新加载所有页面,也可以不带is(ajax)。如果你有一些理由在某个时间避免请求,你可以将数据保存在某些存储中,但你需要在以后发送你的keeped,这种方式更难,我不知道这样的原因..我不理解你的意思是重新定义。
<script/javascript>
    $(document).ready(function () {
        $("#followmarker").click(function(){
            $.ajax({
                type: "POST",
                url: "", // 
                data: { usid: <?php echo '$sess_user_id1'; ?>},
                success: function(msg){
                    alert("success");
                    $("#thanks").html(msg);
                },
                error: function(){
                    alert("failure");
                }
            });
        });
    });
</script
data: { usid: <?php echo "$sess_user_id1"; ?>}