2017-07-14 253 views
1

我想發送JavaScript數組到CI控制器,但數組爲空我也試過strigify了,但仍然輸出數組爲空 請幫我這個請。輸出數組是空的

這是腳本

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#button').click(function(){ 
      var TableData = new Array(); 
      $('#sampleTbl tr').each(function(row, tr){ 
       TableData[row]={ 
        "Day" : $(tr).find('td:eq(0)').text(), 
        "A" :$(tr).find('td:eq(1)').text(), 
        "B" : $(tr).find('td:eq(2)').text(), 
        "C" : $(tr).find('td:eq(3)').text() 
       } 
      }); 
      TableData.shift(); 
      var fullname = $('#fullname').val(); 
      console.log(TableData); 
      console.log(fullname); 
      var arr = JSON.strigify(TableData); 
      $.ajax({ 
       url: '<?php echo base_url('site/ajax');?>', 
       type: 'POST', 
       datatype: 'json', 
       data: {arr: arr}, 
       success: function(){ 

       } 
      }); 
     }); 
    }); 
</script> 

這是形式

<form action="<?php echo base_url()?>site/ajax" method="post"> 
    <input type="text" id="fullname" name="fullname"> 
    <input type="submit" name="button" id="button" value="button"> 
    <table id="sampleTbl"> 
     <tr> 
      <th>Days</th> 
      <th>coloum A</th> 
      <th>coloum B</th> 
      <th>coloum C</th> 
     </tr> 
     <tr> 
      <td>Sunday</td> 
      <td>sunday a</td> 
      <td>sunday b</td> 
      <td>sunday c</td> 
     </tr> 
     <tr> 
      <td>Monday</td> 
      <td>monday a</td> 
      <td>monday b</td> 
      <td>monday c</td> 
     </tr> 
     <tr> 
      <td>Tuesday</td> 
      <td>tuesday a</td> 
      <td>tuesday b</td> 
      <td>tuesday c</td> 
     </tr> 
     <tr> 
      <td>Wednesday</td> 
      <td>wednesday a</td> 
      <td>wednesday b</td> 
      <td>wednesday c</td> 
     </tr> 
     <tr> 
      <td>tdursday</td> 
      <td>tdursday a</td> 
      <td>tdursday b</td> 
      <td>tdursday c</td> 
     </tr> 
     <tr> 
      <td>Friday</td> 
      <td>friday a</td> 
      <td>friday b</td> 
      <td>friday c</td> 
     </tr> 
     <tr> 
      <td>Saturday</td> 
      <td>saturday a</td> 
      <td>saturday b</td> 
      <td>saturday c</td> 
     </tr> 
    </table> 
</form> 

這是控制器部分

public function ajax(){ 

    $fullname = $this->input->post('fullname'); 
    $arr = $this->input->post('arr'); 
    $array = json_decode($arr); 
    echo "<pre>"; 
    echo $fullname; 
    echo "<br>"; 
    print_r($array); 
    // var_dump($_POST); 
} 
+0

'數據:{ARR:ARR}'你在哪裏定義ARR? – sintakonte

+0

我現在更改了代碼 – cks

+0

@cks如果我的答案可以幫助您實現目標,那麼您可以接受我的答案。 –

回答

0

有JSON對象上沒有 「strigify」 的方法。 改爲使用此行:var arr = JSON.stringify(TableData);

0

您未在您的數據中發送key/value對。只有一個值是字符串數組。沒有分配密鑰,$_POST將爲空

實際上並不需要stringifiy該數組。 jQuery將在內部轉換爲形式編碼數組。

嘗試不使用它。

$.ajax({ 
    method: "POST", 
    url: your_url, 
    data : {arr: arr}, 
    dataType: "json" 
})...... 

然後在控制器:

public function ajax(){ 
$arr = $this->input->post('arr'); 
// So on ...  
}