Javascript 将Codeigniter表单验证与Jquery序列化一起使用
我想使用CI的表单验证方法来验证我的输入数据。作为通过AJAX提交的表单,我使用Javascript 将Codeigniter表单验证与Jquery序列化一起使用,javascript,php,jquery,codeigniter,validation,Javascript,Php,Jquery,Codeigniter,Validation,我想使用CI的表单验证方法来验证我的输入数据。作为通过AJAX提交的表单,我使用serializeArray()将数据发布到我的控制器,这样我就不必发布一个数据或编写一些每个函数。问题是表单验证在$\u POST中查找数据。使用serialize()也没有帮助。除了扩展表单验证库,还有什么解决方案吗 这是我的代码: (控制员) js代码: $.ajax({ type: "POST", cache: false, url: url, data: {'form_dat
serializeArray()
将数据发布到我的控制器,这样我就不必发布一个数据或编写一些每个函数。问题是表单验证在$\u POST中查找数据。使用serialize()
也没有帮助。除了扩展表单验证库,还有什么解决方案吗
这是我的代码:
(控制员)
js代码:
$.ajax({
type: "POST",
cache: false,
url: url,
data: {'form_data': form_data},
dataType: "html",
success: function(res, textStatus, xhr)
{
// do something
},
error: function(xhr, textStatus, thrownError)
{
//do something else
},
complete: function()
{
// do some final thing
},
async: true
});
提前感谢将您的数据发布为:
data: form.serialize(),
它将正常工作(表单是对页面表单的普通jquery引用,而不仅仅是“表单”一词)谢谢@jmadsen,但正如我所说的,我测试了serialize,但它仍然会给我错误。我认为这是因为serialize()使表单成为一个查询字符串,但没有任何东西是$\u POST可以理解的。例如,如果我有2个表单元素,它将变为name1=value1&name2=value2,并将放入$\u POST['form\u data']。因此,当codeigniter搜索$_POST[“name1”]时,结果将是错误的。为什么它会出现在表单数据中?它应该像在控制器中一样正常地进入POST var,执行var_转储($\u POST)并查看发生了什么form_data=$(“myform”).serialize()
。正如jquery网站serialize
中所述,“将一组表单元素编码为字符串以供提交。”。这意味着,在调用该函数并将其分配给Ajax数据属性中的某个变量后,它只包含一个查询字符串
。您可以在这里看到示例[。使用var\u dump
还显示了类似字符串(n)name1=value1&name2=value2&…不要将其分配给变量,只需将其作为您的数据传递:ajax调用的一部分;这就是导致问题的原因。您没有传递serialize(),你传递的是一个字符串,你不想这样读我已经给你的答案,请在网上看一下
data: form.serialize(),