Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax应该添加一个会话变量,但不起作用_Javascript_Php_Ajax - Fatal编程技术网

Javascript ajax应该添加一个会话变量,但不起作用

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.

我对AJAX的经验很少,我正在尝试做一些看起来足够简单的工作

我有一个下拉选择表单字段,用于调用包含ajax调用的javascript函数

<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},