无法将PHP会话变量返回JQuery



我知道有很多关于从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攻击向量。

最新更新