1

I'm trying to send data by post using ajax (with codeigniter) and I don't know why but I don't receive anything...

This is how I send it:

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);
    }
});

and this is an example of my form:

<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>

And when I debug it, I always get 0...

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

My controller:

$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 can I fix it??

Aarranz
  • 461
  • 6
  • 20

2 Answers2

0

SOLVED!

The problem was not to replace with:

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

But I think it's usefull...

My problem was that I'm using a library for internationalization (https://github.com/bcit-ci/CodeIgniter/wiki/CodeIgniter-2.1-internationalization-i18n) and I must add language to my url, even if I change my routes.php

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

Thanks a lot!

Aarranz
  • 461
  • 6
  • 20
-1

The issue, as it seems, Is the serialize itself.

As can be seen here :

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

Serialize has an issue with an array in the input fields, It replaces the square barckets :

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

from my fiddle:

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

Using the stackoverflow I supplied above gives the solution(regex replacing certain elements)

Community
  • 1
  • 1
Patrick
  • 3,289
  • 2
  • 18
  • 31