我有一个ajax表单,我正在使用validate插件以及jQuery form 插件,现在如果我在submithandler中使用表单插件方法(这个是一个validate.js参数)方法,如下所示:
submitHandler: function(form) {
$(form).ajaxSubmit({
type:"POST",
data: $(form).serialize(),
url:"inc/database.php",
success: function() {
$('#testimonials :input').attr('disabled', 'disabled');
$('#testimonials').fadeTo( "slow", 0.15, function() {
$(this).find(':input').attr('disabled', 'disabled');
$(this).find('label').css('cursor','default');
});
},
error: function() {
$('#testimonials').fadeTo( "slow", 0.15, function() {
});
}
});
}
我有一个包含两个文本字段然后是文件上传字段的表单,现在使用上面的代码,所有3个字段都保存到数据库中,但是现在如果我编写一个纯jQuery Ajax函数,就像这样: / p>
submitHandler: function(form) {
$.ajax({
type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
url : 'inc/database.php', // the url where we want to POST
data : $(form).serialize(), // our data object
dataType : 'json', // what type of data do we expect back from the server
encode : true
}).done(function(data) {
// log data to the console so we can see
console.log($(form).serialize());
// here we will handle errors and validation messages
});
}
这两个文本字段保存到数据库中,但文件链接没有保存在数据库中,如果我检查phpmyadmin,我看到,保存图像链接URL的字段为空。为什么会这样?我没有看到有和没有表单插件的jQuery代码有什么区别,我在这里缺少什么?任何人都可以解释这个错误吗?
P.S。因为SO声明必须隔离错误,所以我已经对这个Senario进行了广泛的测试,并且已经将jQuery代码归结为罪魁祸首,因此没有发布任何支持的代码,因为我认为这将是无关紧要的。
答案 0 :(得分:0)
使用
var formdata = new FormData($('form')[0]);
$.ajax({
..
data:formdata,
..
});
而不是序列化()数据。