2015-11-24 26 views
0

我有一個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代碼是罪魁禍首,因此沒有發佈任何支持的代碼,因爲我認爲這將是無關緊要的。

+2

因爲當你使用簡單的jQuery時,文件不會被髮送。簡單的xhr請求無法上傳文件。 AjaxSubmit實際上擴展了jquery ajax來上傳文件。在你的第二種情況下,你沒有看到數據文件沒有上傳。 '.serialize'方法只是序列化文本而不是二進制數據。 –

+0

@HarryBomrah謝謝,有沒有關於此的任何文檔?它真的很有趣! –

+0

在某些情況下,它也會使iframe上傳文件。它通常在IE的情況下。 –

回答

0

使用

var formdata = new FormData($('form')[0]); 
$.ajax({ 
.. 
data:formdata, 
.. 
}); 

相反連載()的數據。

+0

我會檢討這個並發表我的評論! –

+0

隨意問或建議。 –

相關問題