javascript - json_decode 后未定义索引

标签 javascript php jquery arrays ajax

当我尝试获取 JavaScript 数组的内容并将其值传递给 PHP 数组变量时遇到问题。

我正在做的是,当用户单击按钮时,单击的项目的值将添加到 javascript 数组中,每次 javascript 数组更新时,PHP 变量也会更新,因此内容显示 PHP 数组内容的 div。我没有使用表单来处理此事,而是使用按钮

但是,当我尝试使用 json_decode 函数获取 JavaScript 数组的值时,它给我一个 Message: undefined index: data 错误

我是 JavaScript、jQuery 和 AJAX 的初学者,所以请耐心等待

这是我的代码:

<script>
    // ARRAY VARIABLE WHERE ITEM VALUES WILL BE STORED
    var food_item = new Array();

    // FUNCTION TO BE TRIGGERED WHEN USER CLICKED THE BUTTON, GET THE ITEM'S VALUE AND ADD IT TO ARRAY
    function addToTray(data){
        food_item.push(document.getElementById(data).value);
        dataString = food_item; // array?
        var jsonString = JSON.stringify(dataString);
           $.ajax({
                type: "POST",
                url: "main",
                data: {data: jsonString}, 
                cache: false,

                success: function(){
                    alert("OK");
                }
            });
    }
</script>

<body>
    ...

    // LINE OF CODE RESPONSIBLE FOR FETCHING JAVASCRIPT ARRAY VALUES
    $this->session->userdata['food_tray'] = json_decode($_POST['data']);

    // DIV TO BE UPDATED

    <div class="col-md-3 food-tray" id="food-items" style="margin-top: 7%">
        <!--FOOD TRAY-->
        <div class="panel-heading">
            <h3 class="ft-header">Food Tray</h3>
        </div>
        <div class="panel-body">
            <?php
                $count_fi = count($this->session->userdata('food_tray'));

                echo "<p>Your Items (" . $count_fi . ")</p>";

                if($count_fi == 0){
                    echo "<p class='no-avail-list'>NO ITEMS ADDED IN FOOD TRAY</p>";
                }else{
                    echo "<table class='table borderless'>";

                    for($i = 0; $i < $count_fi; $i++){
                        echo "<tr>";
                        echo "<td>" . $this->session->userdata['food_tray'][$i] . "</td>";
                        echo "<td>P 200.00</td>";
                        echo "<td><form method='post'><input type='number' name='qty' min='1' max='100' value='1'/></form></td>";
                        echo "</tr>";
                    }

                    echo "</table>";
                    echo "<a href='' class='btn btn-success' data-toggle='modal' data-target='#myModal'>
                        Add Friend</a>";
                    echo "<a href='".base_url()."index.php/CheckOut' class='btn btn-warning'>Proceed to Checkout</a>";
                }
            ?>
        </div>
    </div>

    ...

    <?php
        foreach($query->result() as $row){
            echo "<div class='col-lg-7'>";
                echo "<div class='thumbnail'>";
                    $file_name = strtolower(preg_replace('/[^A-Za-z0-9\-.]/', '', $row->name));
                    /*if(file_exists(FCPATH . '/assets/images/main/food/' . $file_name . '.jpg')){
                        echo "<img src='".base_url()."/assets/images/main/food/".$file_name.".jpg' alt='' width='320px' height='100px'>";
                      }else{
                        echo "<img src='http://placehold.it/320x150' alt=''>";
                      }*/
                      echo "<img src='http://placehold.it/320x150' alt=''>";
                      echo "<div class='caption'>";
                        echo "<h5 class='pull-right'>&#x20B1 " . $row->price . "</h5>";
                        echo "<h5><a href='#'>" . $row->name . "</a></h5>";
                        echo "<h5>Calorie Count :  " . ($row->calorie_count == NULL ? "Not Available" : $row->calorie_count) . "</h5>";
                        // BUTTON FOR `addToTray()` FUNCTION
                        echo "<button class='btn btn-primary' id='".$row->id."' value='".$row->name."' style='width:100%' onclick='addToTray(".$row->id.")'>Add to Tray</button>";
                        // var_dump($row->name);
                      echo "</div>";
               echo "</div>";
           echo "</div>";
       }
    ?>
</body>

谁知道如何解决这个问题?任何帮助,将不胜感激。

最佳答案

将您的 session 创建为

$array = array ('food_tray' => json_decode($javascriptarray));
$this->session->set_userdata($array);

检查您的 JavaScript 库是否已加载到“源”选项卡中。

关于javascript - json_decode 后未定义索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45725841/

相关文章:

PHP 命名空间,已经在命名空间中?

javascript - 在页脚上粘贴 div 元素

javascript - 如何覆盖我的插件的 jQuery 全局函数?

javascript - AddToAny 在 FireFox 中不起作用

javascript - 代理请求超过时间提供错误

javascript - D3 : Why is d3. 格式 (".2s") 将 -0.5 格式化为 -500m?

php - AJAX PHP 上传问题

javascript - 如何从不包括 "N/A"值的下拉列表中计算平均值

php - 如何计算一年是否有53周

javascript - 如何让JS等待确认模式