我知道在从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');
});
});
我在做什么错了?
答案 0 :(得分:2)
您在这里只有一个小问题,它是根据您提供的代码进行的简单修复。您必须在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攻击向量。