为什么Codeigniter中$ _POST为空?

时间:2013-06-11 18:33:54

标签: php codeigniter post

我见过与此类似的问题,但仍未找到解决方案,这真的是在浪费我的时间:(

这是我的控制器

public function test() {
   print_r($_POST);
   return;
}

查看

<?php 
    echo form_open(base_url('go/test'), 'id="update" autocomplete="off" ajax-hidden'); 
    echo form_hidden('id', $id); 
?>
    <input id="update" name="number" class="spinner" readonly="readonly" 
       value="<?$=value?>"/>
<?php 
    echo form_close();
?>

一旦更改了jQuery UI微调器,我就会使用jQuery提交表单。 这是回复:

Array()

4 个答案:

答案 0 :(得分:3)

由于您的forminput元素具有相同的ID update

,因此jQuery很可能无法将值传递给您的Controller

同样<?$=value?>语法不正确。它应该是<?= $value ?>

答案 1 :(得分:2)

此外,您应该使用编码器后处理程序 $ something = $ this-&gt; input-&gt; post('something');

http://ellislab.com/codeigniter/user-guide/libraries/input.html

答案 2 :(得分:1)

将您的输入ID更改为“更新”以外的内容 并将< ?$=value >更改为< ?=$value >

<input id="myInput" name="number" class="spinner" readonly="readonly" value="<?= $value?>"/>

答案 3 :(得分:1)

我忘记了我更改了我的ajax处理程序以使用IE并且没有更改此特定表单的ajax函数,因为此表单的响应应该被隐藏,因此它使用不同的ajax处理程序。

这是我的主要提交功能:

(function($){
    jQuery.fn.ajaxFormSubmit =
        function(container, data) {
            var url = $(this).attr('action');
            $.ajax({
                    url: url,
                    type: "POST",
                    data: data,
                    dataType: "html",
                    success: function(msg) {
                                $(container).html(msg);
                        }
                   });
            return this;
         };
})(jQuery);

我曾经在这个函数中序列化表单数据,但之后我意识到它不适用于IE,唯一的解决方案是在执行任何其他操作之前序列化表单数据!

以下是我正在使用的两个功能:

$('form[ajax]').live('submit', function(e){
    e.preventDefault();
    var data = $(this).serialize();
    var container = $(this).attr('cont');
    if (typeof container == 'undefined' || container == false) {
        container = '.#ajax';
    }
    $(container).html('<img src="public/images/ajax.gif"/>');
    $(container).fadeIn('fast');
    $(this).ajaxFormSubmit(container, data);
});

$('form[ajax-hidden]').live('submit', function(e){
    e.preventDefault();
    var data = $(this).serialize();
    var container = '';
    $(this).ajaxFormSubmit(container, data);
});

第二个函数根本就没有数据变量。所以我添加了它。 希望这可以帮助别人。