Javascript ajax应该添加一个会话变量,但不起作用
我对AJAX的经验很少,我正在尝试做一些看起来足够简单的工作 我有一个下拉选择表单字段,用于调用包含ajax调用的javascript函数Javascript ajax应该添加一个会话变量,但不起作用,javascript,php,ajax,Javascript,Php,Ajax,我对AJAX的经验很少,我正在尝试做一些看起来足够简单的工作 我有一个下拉选择表单字段,用于调用包含ajax调用的javascript函数 <select onchange="update_session_value('123',this.value)"> <option value="1" >1</option> <option value="2" >2</option> </select> 1.
<select onchange="update_session_value('123',this.value)">
<option value="1" >1</option>
<option value="2" >2</option>
</select>
1.
2.
Javascript函数
<script>
function update_session_value(id,value) {
$.ajax({
type: "POST",
url: "untitled1.php",
data: '{"id":"' + id + '","unit":"' + value + '"}',
dataType: 'json',
success: function (data) {
},
fail: function(data){
alert('request failed'); }
});
}
</script>
函数更新会话值(id,值){
$.ajax({
类型:“POST”,
url:“untitled1.php”,
数据:“{id:”+id+“,“单位:”+value+“}”,
数据类型:“json”,
成功:功能(数据){
},
失败:功能(数据){
警报(‘请求失败’;}
});
}
下面是untitled1.php上的代码,它应该设置会话变量
<?php
session_start();
if( (isset($_POST['id'])) && (isset($_POST['unit'])) ) {
// save values from other page to session
$_SESSION['cart'][$_POST['id']]['unit'] = $_POST['unit'];
}
?>
当打印出会话print\r($\u session)
时,它根本没有被修改以反映ajax所做的任何更改。我认为ajax还不能工作。但我在这方面已经达到了极限。是的,我正在使用session_start()代码>在两个页面上
我认为我的问题在于ajax的数据部分;然而,我不确定<代码>数据:“{”id:“+id+”,“value:“+value+”,
我查找了多个传递多个参数的方法,但我无法使它们中的任何一个正常工作。应该发送一个对象,而不是发送单个字符串。这样,您将在$\u POST
中拥有键值对,并且这些值将被正确编码
使用当前的javascript,您需要解析原始输入并解码可能无效的json
所以你需要改变:
data: '{"id":"' + id + '","unit":"' + value + '"}',
致:
尝试将数据参数更正为
数据:{“id”:id,“unit”:value}
移除
dataType:'json'
为什么$\u POST['unit']
存在?那是我的错…我在复制时删除了一些东西,并将其放入值而不是单位中…除了$\u POST['unit']
没有设置之外,数据现在应该得到修复,我不相信您可以将$\u会话
设置为AJAX调用的结果,阿贾克斯正在发帖;您自己并没有点击帖子。@Obsidian当然可以……只要在浏览器开发工具网络中检查实际请求即可启动会话cookie。查看发送的内容是否符合您的预期、状态、响应等。是否向与页面相同的域(端口、子域等)发出请求?那么在$u POST中如何处理?它是否仍会自动设置为$\u POST['id']
和$\u POST['unit']
?是的,我将您的设置为,出于某种原因,它仍然没有设置。现在,上面有人提到我不能这样设置会话。这是真的吗?我不明白为什么它不起作用?另外,我不需要现场页面上的会话。如果页面被刷新,我需要它。@KDJ您可以像在任何其他php脚本中一样使用会话,ajax请求没有什么特别之处。您需要缩小您的问题范围,javascript中的值是您期望的值吗。在php中也是如此。我能够用JavaScript传递正确的变量并正确地提醒它们。至于php,我不确定如何判断。有没有一种简单的方法可以从Ajax中获得回报?我知道会议没有安排好。不知道如何检查Ajax。我正在努力了解更多关于Ajax@KDJ如果您想查看ajax php脚本的功能,可以在那里输出内容,并在浏览器的开发人员工具中检查该输出。
data: {"id": id, "unit": value},