使用 ajax 将变量从会话添加到另一个会话
Add variable from session to another session using ajax
我是 JavaScript 的新手,并试图从 'Name' 传递一个会话变量,该变量已经使用 PHP 分配了一个变量,并将其传递给 'cartItem'单击按钮。
据我所知,当前代码将 'Name' 的值存储到 var 项中,然后向服务器请求 HTML 到 return 并更新会话变量 'cartItem'存储在 var item 中的值。
按钮和脚本:
<button id='addToCart' onclick='addToCart'>Add to cart</button>
<script>
function addToCart(){
var item = sessionStorage.getItem('Name');
item = new XMLHttpRequest();
item.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
sessionStorage.setItem('cartItem', item);
}
}
}
</script>
cartItem 然后使用跨所有页面调用的函数显示在我的导航栏中
<span class='item-info'>
<span>" . $_SESSION['cartItem'] . "</span>
</span>
但是没有显示。任何建议将不胜感激。
如果我理解正确,您正在使用 sessionStorage 对象在 Javascript / HTML 文档中存储 PHP 会话变量值, 正确的?如果是这样,那么请理解,当您尝试 change 一个值时,您只是在 client 端、服务器端(或 PHP侧)不受影响)。
看起来您对 XMLHttpRequest 的想法是正确的,但是为了完成您需要做的事情,您需要制作一个 PHP 脚本,其中 Javascript 函数会ajax到。这是一个小模型:
<?php
//NOTE: this does not do any input sanatation
//name of this script is changeVal.php
$keyAr = ["Name","Price","Value","Other"];
if (in_array($_POST['key'],$keyAr) {
$_SESSION[$_POST['key']] = $_POST['val'];
}
我故意以这种方式使用数组而不是 $_SESSION[$_POST['key']] 以便潜在的黑客无法更改值任何会话变量。
一旦你有了上面的脚本,你就可以向那个脚本发出 ajax 请求,其中 key 是要更改的 var 的名称,val 是要将其更改为的值。
注意: 这不会对输入 material 执行任何清理或保护。这只是一个简单的模型。
您已创建 XMLHttpRequest 对象,但尚未打开 URL 或发送请求。
示例(未测试):
var name = sessionStorage.getItem('Name');
var item = new XMLHttpRequest();
item.open("GET", "http://www.example.com/endpoint/" + name);
item.send();
此后,对象"item"将包含响应正文和HTTP状态代码等信息。
我是 JavaScript 的新手,并试图从 'Name' 传递一个会话变量,该变量已经使用 PHP 分配了一个变量,并将其传递给 'cartItem'单击按钮。
据我所知,当前代码将 'Name' 的值存储到 var 项中,然后向服务器请求 HTML 到 return 并更新会话变量 'cartItem'存储在 var item 中的值。
按钮和脚本:
<button id='addToCart' onclick='addToCart'>Add to cart</button>
<script>
function addToCart(){
var item = sessionStorage.getItem('Name');
item = new XMLHttpRequest();
item.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
sessionStorage.setItem('cartItem', item);
}
}
}
</script>
cartItem 然后使用跨所有页面调用的函数显示在我的导航栏中
<span class='item-info'>
<span>" . $_SESSION['cartItem'] . "</span>
</span>
但是没有显示。任何建议将不胜感激。
如果我理解正确,您正在使用 sessionStorage 对象在 Javascript / HTML 文档中存储 PHP 会话变量值, 正确的?如果是这样,那么请理解,当您尝试 change 一个值时,您只是在 client 端、服务器端(或 PHP侧)不受影响)。
看起来您对 XMLHttpRequest 的想法是正确的,但是为了完成您需要做的事情,您需要制作一个 PHP 脚本,其中 Javascript 函数会ajax到。这是一个小模型:
<?php
//NOTE: this does not do any input sanatation
//name of this script is changeVal.php
$keyAr = ["Name","Price","Value","Other"];
if (in_array($_POST['key'],$keyAr) {
$_SESSION[$_POST['key']] = $_POST['val'];
}
我故意以这种方式使用数组而不是 $_SESSION[$_POST['key']] 以便潜在的黑客无法更改值任何会话变量。
一旦你有了上面的脚本,你就可以向那个脚本发出 ajax 请求,其中 key 是要更改的 var 的名称,val 是要将其更改为的值。
注意: 这不会对输入 material 执行任何清理或保护。这只是一个简单的模型。
您已创建 XMLHttpRequest 对象,但尚未打开 URL 或发送请求。
示例(未测试):
var name = sessionStorage.getItem('Name');
var item = new XMLHttpRequest();
item.open("GET", "http://www.example.com/endpoint/" + name);
item.send();
此后,对象"item"将包含响应正文和HTTP状态代码等信息。