【发布时间】:2018-07-28 00:21:01
【问题描述】:
我知道有很多关于从 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');
});
});
我做错了什么?
【问题讨论】:
-
我相信您已经遇到了服务器端代码和客户端代码之间的混淆区别。 PHP 完成后,生成的 html 将发送到客户端。然后客户端运行javascript。为了取回更多数据,您发送一个新请求(在 ajax 中或直接)。然后,您必须处理来自该新请求的返回数据...这是您不在
.post调用中的地方。 -
因此您需要遵循的数据流类似于:PHP 创建显示给用户的 HTML 内容。用户单击某些内容会触发通过 AJAX 将数据发送到后端脚本的事件。此后端脚本创建您需要的会话变量然后将此值返回给进行 AJAX 调用的同一脚本。发生这种情况时,您将可以使用会话值。
-
php 没有将 html 发送回客户端。它正在设置服务器端会话变量。 .post 是调用 php 来执行此操作的原因。当我将#testSession div 的 html 设置为会话变量时,我正在处理数据。不对吗?
-
您不必返回 HTML。您可以返回 JSON 编码的值数组。看看
$.ajax()。调用后端脚本后有一个success回调处理所有返回的数据。 -
@IncredibleHat 是的,我相信
$.post()和$.get()都使用预定义的设置调用$.ajax()。我只是更喜欢使用$.ajax()- 并不是说 OP 不能使用其他人。