2014-11-24 204 views
0

數據和文件,我知道有一個topic說到這個 我跟着它,但我仍然有問題,我的代碼 這裏是我的代碼發送使用Ajax和jQuery

var id_dossier    = $('#jform_id').val(); 
     var date_facture   = $('#jform_date_facture').val(); 
     var date_paiement_facture = $('#jform_date_paiement_facture').val(); 
     var mode_paiement_facture = $("select#jform_mode_paiement_facture option").filter(":selected").val(); 
     var idBanque    = $("select#jform_id_banque option").filter(":selected").val(); 
     var idCompte    = $("select#jform_id_compte option").filter(":selected").val(); 
     var cheque_facture   = $('#jform_cheque_facture').val(); 
     var montant_cheque   = $('#jform_montant_cheque').val(); 
     var numero_facture   = $('#jform_numero_facture').val(); 
     var numero_retenu_source = $('#jform_numero_retenu_source').val(); 
     var echeance    = $('#jform_valeur_echeance').val(); 
var document_facture  = document.getElementById('facture_document'); 

的document_facture是文件輸入

然後我把數據在其他變種我在其他疑問句叫donnee

var donnee ={ 
         'id_dossier' : id_dossier, 
         'date_facture' : date_facture, 
         'date_paiement_facture' : date_paiement_facture, 
         'mode_paiement_facture' : mode_paiement_facture, 
         'id_banque' : idBanque, 
         'id_compte' : idCompte, 
         'cheque_facture' : cheque_facture, 
         'montant_cheque' : montant_cheque, 
         'numero_facture' : numero_facture, 
         'numero_retenu_source' : numero_retenu_source, 
         'echeance' : echeance, 
         'document_retenu_source' : document_retenu_source 
        }; 

好重刑有這行代碼,我不知道是什麼,我怎麼能取代它在我的代碼

var formData = new FormData($(this)[0]); 

,所以我用這個

var formData = new FormData(); 
     formData.append('documents', document_facture.files[0]); 

取代它和我的數據添加它Ajax請求

$.ajax({ 
       type: 'post', 
       cache: false , 
       url: 'index.php?option=com_tktransit&task=dossier.genererFacture', 
       data: {donnee:donnee,formData:formData }, 
       success: function(resp) 
       { 

        if(resp == "1") 
        { 
         ajax_result_message("<?php echo JText::_('COM_TKTRANSIT_DOSSIER_FACTURE_GENERER'); ?>",0,'facture'); 
         afficher_button(2); 
         $('#td_facturation').html("<?php echo JText::_('COM_TKTRANSIT_FACTURE_DEJA_FACTURER'); ?>"); 
         $('#td_check_facturation').hide(); 
         generate_pdf(id_dossier); 
        } 
        else if(resp == "2") 
        { 
         ajax_result_message("<?php echo JText::_('COM_TKTRANSIT_DOSSIER_FACTURE_NUMERO_FACTURE_EXISTE_DEJA'); ?>",1,'facture'); 
        } 
        else 
         ajax_result_message("<?php echo JText::_('COM_TKTRANSIT_DOSSIER_FACTURE_ERREUR_GENERER_FACTURE'); ?>",1,'facture'); 
        $("#ajax-facture-image_loader").hide(); 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) 
       { 
        ajax_result_message("<?php echo JText::_('COM_TKTRANSIT_DOSSIER_FACTURE_ERREUR_GENERER_FACTURE'); ?>",1,'facture'); 
        $("#ajax-facture-image_loader").hide(); 
       } 

       }); 

以及當我點擊按鈕來調用AJAX功能,我得到這個錯誤 類型錯誤:「追加」調用的對象不實現接口有關MDATA。 任何幫助,請

+0

您應該查看'ajaxForm'插件:http://malsup.com/jquery/form/ – leftclickben 2014-11-24 09:01:54

回答

0

你應該放置在HTML頁面的形式,所以,線路上所有的變量

var formData = new FormData($(this)[0]);

將成爲

var formData = new FormData($('#yourFormUniqueId')[0]);

我想你可以通過this answer找到更多詳細信息

+0

那麼在我的表單中我有很多文件,並且用戶可以添加很多輸入文件,我想這個具體的一個 那麼如果你提到我使用的是joomla 2.5,我有一個主窗體,並添加了很多模板 – Rad 2014-11-24 09:05:06

+0

@Rad爲什麼不把這個特定的文件放到一個單獨的窗體中,然後用ajax發佈呢? – 2014-11-24 09:08:26

+0

@Rad,你是什麼意思,你的用戶可以添加很多文件?正如我所看到的,您選擇只發布特定的值。 – 2014-11-24 09:10:47