2016-05-14 104 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; 
} 

希望这将是帮助。