2017-08-17 5 views
1

JavaScript配列の内容を取得してその値をPHP配列変数に渡そうとすると問題が発生します。json_decodeの後の未定義のインデックス

ユーザーがボタンをクリックすると、クリックされた項目の値がjavascript配列に追加され、javascript配列が更新されるたびにPHP変数も更新されますPHP配列の内容を表示するdivの名前です。私はJavaScriptの配列の値を取得するにはjson_decode機能を使用しようとするとき、私は私が初心者だそれは私に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> 

誰ですか?どんな助けもありがとう。 JavaScriptのライブラリがソース]タブにロードされている場合

+0

**コメントは拡張されたディスカッションやデバッグセッションではありません**;この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/152167/discussion-on-question-by-chamber-undefined-index-after-json-decode)。解明やコードの入力を求められたら、あなたの質問に編集する必要があります。今問題を解決した場合は、回答を投稿する必要があります。 –

答えて

0

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

チェックとして、あなたのセッションを作成します。

関連する問題