2017-08-17 137 views
1

我试图获取JavaScript数组的内容并将其值传递给PHP数组变量时遇到问题。json_decode之后的未定义索引

我在做的是,当用户点击一个按钮时,被点击的项目的值将被添加到JavaScript数组中,并且每当javascript数组更新时,PHP变量也会更新,因此内容的div显示PHP数组的内容。我使用的不是这件事的形式,但按钮

然而,当我尝试使用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> 

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

+0

**注释不适用于扩展讨论或调试会话**;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/152167/discussion-on-question-by-chamber-undefined-index-after-json-decode)。如果提示澄清或代码,则应将其编辑到您的问题中。如果你现在已经解决了这个问题,你应该发布一个答案。 –

回答

0

如果你的JavaScript库的源标签加载创建为

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

检查会话。