javascript - 这正常吗,如果我在 javascript ajax 中使用 php 进行会话内部条件?
问题描述
我有一个使用 javascript ajax 的代码,如下所示:
$.ajax({
type: "POST",
url: "<?= site_url('test/test'); ?>",
dataType: "JSON",
data: {
id: id,
name: name,
},
success: function(data){
var data = {
"id": id,
"name": name,
}
<?php if ($this->session->userdata('class') == 'employee') { ?>
console.log('a');
<?php } else { ?>
console.log('b');
<?php } ?>
}
})
我可以在 ajax 代码中使用会话吗?
解决方案
您只能使用 PHP 变量(例如 Session)作为您作为硬编码值嵌入到代码中的东西,例如,如果您编写,则创建一个 JS 变量,该变量在脚本启动时具有 Session 值的值。假设该示例中的 Session 值为“hello”,那么在浏览器接收并执行的最终 JavaScript 中,您将看到以下行:作为硬编码片段。var x = '<?php echo $_SESSION["x"]; ?>';
x
var x = "hello";
这是因为 PHP 在服务器上执行,并在 PHP 停止执行后生成 HTML 和 JS,然后将其发送到浏览器。
你不能做的只是像你在示例中所做的那样在 JavaScript 中内联编写 PHP,并期望它做任何事情。该 PHP 将在您的 JavaScript之前执行,并且 PHP 的结果/输出(如果有的话)将嵌入到 JavaScript 中(或用于准确控制生成什么 JavaScript 并将其发送到浏览器)。
如果在执行 JavaScript 代码的过程中需要与服务器交互,但没有回传整个页面,则需要发出 AJAX 请求,因此它会向服务器生成一个新的 HTTP 请求,服务器可以执行 PHP 脚本并然后将响应返回给 JavaScript 进行处理。
在您问题的具体示例中,由于您已经发出 AJAX 请求,它可以将数据从 PHP 返回到 JavaScript,我建议您只需在响应数据中包含所需的 Session 值,然后编写一些 JavaScript 来读取该值并决定做什么。
进一步阅读:客户端和服务器端编程有什么区别?
推荐阅读
- mongodb - 使用流星查询转换后的字段
- c++ - 如何在继续使用 libuv 之前处理所有可用的数据报
- docker - Spring Boot 尝试连接到 Mongo localhost
- netlogo - 走在疏散模型中的NetLogo
- tensorflow - TypeError:“TensorShape”对象不可调用
- python - 如何使用 python 将富文本格式复制到剪贴板
- c# - 如何组合多个 c# Lambda 表达式(表达式
>) - ios - 您必须年满 18 岁才能在 App Store 上发布应用程序吗?
- javascript - Javascript - 从列表中返回值
- excel - 基于价值重要性的排名