我见过与此类似的问题,但仍未找到解决方案,这真的是在浪费我的时间:(
这是我的控制器
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()
答案 0 :(得分:3)
由于您的form
和input
元素具有相同的ID update
同样<?$=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);
});
第二个函数根本就没有数据变量。所以我添加了它。 希望这可以帮助别人。