【问题标题】:value is not updating of session array to json array via ajax值不是通过 ajax 将会话数组更新为 json 数组
【发布时间】:2013-02-26 08:39:00
【问题描述】:

我有一个会话数组 $_SESSION['Cartquantity'] 。在第 200 行的 php 文件中,我将此数组存储在变量 $QtyArray

$QtyArray = $_SESSION['Cartquantity'] ;

然后我在 json 中对数组进行编码以在 js 文件中使用它

echo "var cartQty = " . json_encode($QtyArray) . ";" ; (on line 201)

现在通过 AJAX 我正在以相同的方式更新第 120 行的会话数组

$QtyArray = $_SESSION['Cartquantity'] ;                (on line 120)
echo "var cartQty = " . json_encode($QtyArray) . ";" ; (on line 121)

这是我调用文件的javascript代码

$.ajax({
                    url:'index.php',
                    cache:false,
                    datatype:'json',
                    data:{ q: "add_card", item_id: id, item_qty: qty,stop:'1' },
                    success:function(data){
                        $("#cart_quanity").html(parseFloat($("#cart_quanity").html()))
                    }
                });
        return false ;  

array 显然正在更新,因为我可以在 firebug 的控制台上看到它。但是当我在 js 文件中获取这个值时,值并没有改变。如果我重新加载通过 ajax 更新此值的页面,然后查看数量,它正在发生变化。为什么会这样?

请帮忙!!!

【问题讨论】:

  • 你是如何调用 javascript 文件的?
  • 我在 url 中设置变量并在 php 文件中比较它是真的然后执行 javascript。
  • 不完全是我问的......javascript文件。您如何将其包含在页面中?
  • 你确定它们在同一个范围内吗?
  • 我将 js 文件包含在 中作为 在第 220 行

标签: php ajax arrays json


【解决方案1】:

您的 ajax 请求的服务器端处理程序应该只返回数据文字本身。
在客户端解析该数据,然后在那里处理它 - 不是作为“完整”的 javascript sn-p 而是作为数据对象。 JQuery 在解析部分为您提供支持。只需让它自动猜测响应的类型或在调用 $.ajax 或 $.post 时定义它。

$.post(url, data, function(response) {
  // you cann assume response to be an object 
  // containing the data from the json-response of the server
}, "json");

独立的例子(没有做任何有用的事情):

<?php
if ( isset($_POST['foo']) ) {
    // the client requests a new item
    $rv = array(
      'status'=>'ok',
      'value'=>rand(1,10)
    );
    header('Content-type: application/json');
    echo json_encode($rv);
    die;    
}
?>
<html>
    <head>
        <title>...</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                var total = 0;
                $(".foo").on("click", function() {
                    $.post("?", { foo: true }, function(data) {
                        if ( data.status && "ok"==data.status ) {
                            var newValue = data.value;
                            total += newValue;
                            $("#output").append("+ "+newValue+" = "+total+"<br />");
                        }
                    }, "json");
                });
            });
        </script>
    </head>
    <body>
        <button class="foo">click</button>
        <div id="output">0<br /></div>
    </body>
</html>

【讨论】:

  • 所以根据你我应该怎么做
  • 就是这样:处理 ajax 请求时只返回数据字面量,这是最简单的形式 a) 将要发送到客户端的数据放入 php 数组 $rv b) echo json_encode($房车)。在客户端实现一个响应处理程序$.post(... function(response) { ... }, 'json'),它对数据from response 做一些事情。
  • 我的声望是 39 那么为什么我的帐户被阻止提问
猜你喜欢
  • 1970-01-01
  • 2014-02-08
  • 2018-10-26
  • 2020-06-06
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
相关资源
最近更新 更多