【问题标题】:not receiving data in php codeigniter when sending ajax post发送ajax帖子时未在php codeigniter中接收数据
【发布时间】:2015-03-02 19:22:15
【问题描述】:

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

我是这样发送的:

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

我该如何解决它??

【问题讨论】:

  • sendData 里面是什么?
  • 希望文档中的 $.ajax 准备就绪
  • 在 sendData 我有我的表单序列化,我更新它。是的,在 document.ready 中。
  • 一样,不行

标签: php jquery ajax codeigniter


【解决方案1】:

解决了!

问题不在于替换为:

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

但我认为它很有用......

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

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

非常感谢!

【讨论】:

    【解决方案2】:

    问题似乎是序列化本身。

    可以在这里看到:

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

    序列化在输入字段中存在数组问题,它替换了方括号:

    小提琴:
    http://jsfiddle.net/3vr0dtgn/

    来自我的小提琴:

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

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

    【讨论】:

    • 我已经测试过了。它可以正常工作,它只是通过序列化完成的编码。
    • @IndrasinhBihola 好吧,我没有发明轮子,对我来说,用正则表达式严格修复编码解决了这个问题。
    • 它不起作用...它确实替换它,但是在我的控制器中,我仍然没有_POST中的数据。但我刚刚找到了解决方案。谢谢!
    • 很高兴听到,为后代回答你自己的问题:)
    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2013-08-21
    • 2011-06-23
    相关资源
    最近更新 更多