2016-05-14 99 views
1

如何傳遞數組和ajax? 我的視圖代碼:在codeigniter中使用ajax發送數組

$(document).ready(function(){ 

    $('#btn-send').click(function(){ 

    var value = { 
       'name': $('#name').val(), 
       'phone': $('#phone').val(), 
       'mail': $('#mail').val(), 
      }; 

    $.ajax({ 
     type: 'POST', 
     url: '<?php echo site_url('customer_add/test'); ?>', 
     data: value, 
     success: function(resp){ 
      $('#error').html(resp); 
     } 
    }); 
    }); 
}); 

我的測試方法:

public function test5(){ 
    $data = $this->input->post["value"]; 
    $name = $data['name']; 
    echo $name; 
} 

在PARAMS - 在檢查元素 - 有數據,但響應,沒有什麼回報。 有什麼問題? 提前致謝。

+0

試試這個'成功:function(data){ // alert(「ok」); \t \t \t }, \t \t \t錯誤:函數(ER){ \t \t \t \t \t警報( 「有一些錯誤」); \t \t \t \t \t console.log(er.responseText); \t \t \t \t \t \t \t \t \t}' – developersaumya

+0

您請求在阿賈克斯和你向我們展示在您的服務器腳本功能TEST5代碼的功能測試??? – Poria

回答

0

您發送通過Ajax的數據與您共創與鍵值的數組:值對時 數據使用後,所以你可以在一個單個可變用得到這個整個數組 發送到服務器。

public function test5(){ 
    $data = $this->input->post(); 
    $name = $data['name']; echo $name; 
    $phone = $data['phone']; echo $phone; 
    $mail = $data['mail']; echo $mail; 
} 

您不必在$ data = $ this-> input-> post [「value」]中提及value key;

你正在寫錯誤的語法$第二件事這個 - >輸入 - >發佈[ 「價值」];

寫入語法是$ this-> input-> post(「value」);

但是在$ this-> input-> post(「value」);你不能得到價值,因爲沒有價值的關鍵。

+0

謝謝quarksera :) 你說得對。我將其更改爲數據:{value:value},現在我採用了gat響應,但問題是以這種方式,表單驗證不起作用。起初它返回驗證錯誤,但如果我寫數據,錯誤仍然是相同的,不會改變! – meph

+0

你使用codeignitor表單驗證或自定義給我一些提示,否則我無法做任何事情 – quarksera

1

首先,你可以通過error: function(xhr) {},

$.ajax({ 
    type: 'POST', 
    url: '<?php echo site_url('customer_add/test'); ?>', 
    data: { 
     name: $('#name').val(), 
     phone: $('#phone').val(), 
     mail: $('#mail').val() 
    }, 
    error: function(xhr) { 
     alert('error'); 
    }, 
    success: function(resp){ 
     $('#error').html(resp); 
    } 
}); 

下一頁處理在$.ajax錯誤部分的錯誤,type: 'POST'表示形式將發佈領域出該方法POST
所以我們可以通過$_REQUEST$_POST來捕捉它們。

在Codeigniter中,捕獲張貼字段的方法是$this->input->post('name');
您的語法存在錯誤。

public function test5(){ 
    $data['name'] = $this->input->post('name'); 
    $data['phone'] = $this->input->post('phone'); 
    $data['mail'] = $this->input->post('mail'); 

    echo $data; 
} 

希望這將是幫助。