发送 ajax post 时未在 php codeigniter 中接收数据

not receiving data in php codeigniter when sending ajax post

我正在尝试使用 ajax(使用 codeigniter)通过 post 发送数据,我不知道为什么但我没有收到任何东西...

我是这样发送的:

var sendData = $('#formContact').serialize();
$.ajax({
    type: 'POST',
    url: '<?php echo base_url()?>/intranet/update/updateProfile',
    data: sendData,
    dataType: 'json',
    success: function (data) 
    {
        console.log(data);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    }
});

这是我的表单示例:

<form id="formContact" action="update" method="POST">
    <input class="headInput" type="text" name="userName" value="Tito"/>
    <input class="headInput" type="text" name="userLastName" value="Lancreo"/>
    <input class="headInput" type="text" name="phone[]" value="666666"/>
    <input class="headInput" type="text" name="phone[]" value="111111"/>
    <input class="headInput" type="text" name="phone[]" value="222222"/>
</form>

当我调试它时,我总是得到 0...

[false, false, Array[0], false, null]

我的控制器:

$this->load->helper('form');
$this->load->library('form_validation');

//1 way
$ret=$this->input->post();

//2 way        
$return=$this->input->post(NULL, TRUE);

//3 way
$all=$_POST;
json_encode($all);

//4 way
$contact=$this->input->post("userName");

//return everything...
$var[0]=$return;
$var[1]=$contact;
$var[2]=$all;
$var[3]=$ret;
$var[4]=$data;
echo json_encode($var);

我该如何解决?

问题似乎出在序列化本身。

如此处所示:

How to send serialize form data using JQuery if the input element is an array

Serialize 在输入字段中存在数组问题,它替换了方形 barckets :

fiddle :
http://jsfiddle.net/3vr0dtgn/

来自我的 fiddle:

data = $('form').serialize();
$('div').append(data);

使用我上面提供的 Whosebug 给出了解决方案(正则表达式替换某些元素)

已解决!

问题不是替换为:

serialize().replace(/%5B%5D/g, '[]');

不过我觉得很有用...

我的问题是我正在使用国际化库 (https://github.com/bcit-ci/CodeIgniter/wiki/CodeIgniter-2.1-internationalization-i18n),我必须向我的 url 添加语言,即使我更改 routes.php

url: '<?php echo base_url()?>en/intranet/update/updateProfile'

非常感谢!