【问题标题】:PHP AJAX Session Variable Not WorkingPHP AJAX 会话变量不工作
【发布时间】:2017-09-20 10:19:38
【问题描述】:

我是使用 Session 变量的新手,尽管在网上搜索了解,但我一直在苦苦挣扎。

所以基本上我有一个页面(search.php)。我根据搜索表单加载动态数据表。加载表格后,通过 AJAX 我执行以下操作:

$.ajax({
    type:'POST',
    url:'/ITSMIS/data/asset/search.php',
    data:HardwareAsset,
    dataType: 'html',
    // When PHP / SQL Query Has Been Executed If Data Is Returned
    success:function(data){
        // Load The Data Table Results
        LoadDataTable(data);
        // Generate Hyperlinks For The Table Rows

        $('#data-table tr').click(function(){       
            var HyperlinkHardwareAssetID = $(this).data('id');
            $.ajax({
                type:'POST',
                url:'/ITSMIS/session.php',
                data: HyperlinkHardwareAssetID,
                success: function(data){
                    alert("great!");
                }
            });
            window.location = $(this).data('href');
        }); 

    }
})

正如您在 Success 和单击表格行记录时看到的那样,我的想法是通过 AJAX 发布一个变量以供以后使用。并将用户重定向到 update.php 页面。

我希望随后使用 POSTED AJAX 变量在 session.php 页面中创建一个会话变量。

session_start();
$_SESSION["HardwareAssetID"] = $_POST["HyperlinkHardwareAssetID"];

然后我应该在 update.php 页面加载时在页面上显示 Session 变量结果。

        $session = $_SERVER['DOCUMENT_ROOT'];
        $session .= "/ITSMIS/session.php";
        include_once($session);

        echo $_SESSION["HardwareAssetID"];

但我只收到以下错误:

注意:未定义索引:第 3 行 C:\xampp\htdocs\ITSMIS\session.php 中的 HyperlinkHardwareAssetID

暗示由于某种原因,点击表格行时的 AJAX POST 不起作用。但是总是触发成功的警报。

有什么想法吗???

【问题讨论】:

    标签: javascript php jquery ajax session


    【解决方案1】:

    要将变量发送到您的 php,您必须在 $.ajax 函数的 data 属性中发送一个对象,例如:

    $.ajax({
        data: {
            'var_name': 'value'
        }
    });
    

    并且,在 PHP 文件中:

    $item = $_POST['var_name'];
    

    因此,在您的代码中,您应该以这种方式使用您的 $.ajax 函数:

    $.ajax({
       type:'POST',
       url:'/ITSMIS/session.php',
       data: {
           'HyperlinkHardwareAssetID': HyperlinkHardwareAssetID
       },
       success: function(data){
           alert("great!");
       }
    });
    

    欲了解更多信息,请参阅jQuery.ajax() Documentation

    【讨论】:

    • 谢谢,在您分享此信息后,我明白了为什么我需要这样做,我在代码中的其他任何地方都这样做了,但这并没有解决我的错误消息,有什么想法吗?
    • 在您的 PHP 文件中插入一个 print_r($_POST),并在 $.ajax 中插入一个新的数据变量,例如:data: {'HyperlinkHardwareAssetID': HyperlinkHardwareAssetID, 'hello': 'Hi there!'}。您的 HyperlinkHardwareAssetID 似乎有一个未定义的值,并且这些值没有出现在 $_POST 变量中。如果你想用 jQuery 获取tr 属性,使用$(this).attr('id') 而不是$(this).data('id'),对$(this).data('href') 做同样的事情
    • 仔细查看代码,当我尝试检查成功的“数据”时,它显示未定义......
    【解决方案2】:

    您需要将 ajax 数据参数作为对象 {key:value} 传递

       $.ajax({
                type:'POST',
                url:'/ITSMIS/session.php',
                data: {HyperlinkHardwareAssetID : HyperlinkHardwareAssetID  },
                success: function(data){
                    alert("great!");
                }
        });
    

    【讨论】:

    • 感谢您的建议,我注意到我最初错过了这个,我已经尝试过这个但仍然是同样的错误。
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 2023-03-19
    • 2023-03-30
    • 2013-04-16
    • 2013-11-10
    • 2015-09-30
    • 2012-08-17
    • 2014-05-16
    相关资源
    最近更新 更多