无法将PHP会话变量返回给JQuery - php

我知道关于从JQuery设置PHP会话然后将其返回给JQuery一直有很多问题。而且我查看了所有这些内容,但仍然无法弄清楚为什么我的代码不起作用。我正在尝试使用模式在后端PHP页面上设置PHP会话变量,然后使用jquery在另一个模式中显示它,但未返回任何内容。

这是我的发送方式:

<div id="sendingModal" class="modal" tabindex="-1" role="dialog">
 <div class="modal-dialog modal-md" role="document">
  <div class="modal-content">
   <div class="modal-body">
    <button id="testSession" type="button" class="btn btn-secondary">Session Test</button>
   </div>
  </div>
</div>

这是我的后端php:

<?php
  session_start();
  $_SESSION['testInput'] = $_POST['inputData'];
?>

这是我的接收方式:

<div id="receivingModal" class="modal" tabindex="-1" role="dialog">
 <div class="modal-dialog modal-md" role="document">
  <div class="modal-content">
   <div class="modal-body">
    <div id="testDiv"></div>
   </div>
  </div>
</div>

这是我的JQuery:

$(document).ready(function() {
 $('#testSession').on('click',function(e){
   var testData = 'testing 123';
   $.post("backendSession.php", {"inputData": testData});
   $('#testSession').html(<?=$_SESSION['testInput']?>);
   $('#testModal').modal('show');
 });
});

我究竟做错了什么?

参考方案

您在这里只有一个小问题,它是根据您提供的代码进行的简单修复。您必须在ajax调用期间返回新数据,否则您将无法使用它(直到刷新整个新页面为止)。

首先,添加到您的backendSession.php

<?php
    session_start();
    $_SESSION['testInput'] = $_POST['inputData'];
    echo htmlspecialchars( $_SESSION['testInput'] );// new bit
?>

然后按如下所示调整.post的用法:

$(document).ready(function() {
    $('#testSession').on('click',function(e){
       var testData = 'testing 123';
       $.post("backendSession.php",
              {"inputData": testData},
              function( rawdata ) {                  // add return handler callback
                  $('#testDiv').html( rawdata );     // use the return data
                  $('#testModal').modal('show');     // show the modal
              }
       );
    });
});

现在,这是进行您想做的工作的基本更改。但是,如果您计划需要的不仅仅是输入的回显,则将来可能需要处理JSON返回数据。一个例子将超出问题;)

另一方面:您可能希望清理该帖子输入。我知道您提供的只是一个最小的示例,但我只想提一下。正如简单地将原始用户输入回显到页面一样,可以打开一些XSS攻击向量。

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

使用PHP包含时的淡入淡出过渡 - php

我正在尝试使用jQuery或CSS(或其他方式!)在DIV中包含的php页面上创建淡入淡出或滑动过渡。我四处搜寻,发现了很多淡入淡出过渡的示例,这些实例彼此淡入淡出div或隐藏内容淡入淡出,但是这种情况略有不同。我有一个DIV,其内容由导航栏控制。选中后,每个页面都可以使用PHP成功地包含在div中,但我想使内容淡入和淡出。关于如何在页面更改之间进行漂亮过渡…

AJAX调用只能与$(document).on('click')一起使用 - php

我有一个显示数据库条目的表。用户能够为每一行打开一个弹出菜单。选项之一是删除数据库条目,并且该表应通过AJAX调用相应地刷新。只要有人单击#delete-toggle中的table-popup,我就会在HTML页面上进行AJAX调用(table-popup是div,当有人单击每行中存在的表中的table-edit-button时出现的表): <div …

将输入类型复选框关联到输入类型文本 - php

我有一个问题,我需要将输入类型复选框与输入类型文本关联。情况如下:从数据库中提取数据。 PK数据是复选框的值。当复选框选择输入类型的文本时,您可以在其中输入特定数字。现在的问题是,选中所有类型的复选框输入文本都会被激活。我希望通过选择复选框输入,仅启用与复选框相关联的输入。我的HTML代码(此代码创建一个输入复选框,并为数据库中的每个记录输入文本,而我要激活…

如何从php中获取datatables jQuery插件的json数据 - php

我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…