我有一個AJAX形式,我使用的驗證插件,也jQuery的form插件,現在如果我使用的submithandler裏面的表單插件的方法(這是一validate.js參數)方法,像這樣:數據庫文件鏈接字段爲空時使用jQuery AJAX方法
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函數,如下所示:
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代碼是罪魁禍首,因此沒有發佈任何支持的代碼,因爲我認爲這將是無關緊要的。
因爲當你使用簡單的jQuery時,文件不會被髮送。簡單的xhr請求無法上傳文件。 AjaxSubmit實際上擴展了jquery ajax來上傳文件。在你的第二種情況下,你沒有看到數據文件沒有上傳。 '.serialize'方法只是序列化文本而不是二進制數據。 –
@HarryBomrah謝謝,有沒有關於此的任何文檔?它真的很有趣! –
在某些情況下,它也會使iframe上傳文件。它通常在IE的情況下。 –