2017-02-07 4 views
0

Ich habe ein Formular mit Textfeldern und einem Datei-Upload. Wenn Benutzer auf die Schaltfläche klicken. Die Textfeld Werte und Datei Upload-Name ist in der Datenbank gespeichert und die Dateien werden auf den Server hochgeladen. Ich habe keine Erfahrung mit AJAX. Also, jede Hilfe wird sehr geschätzt.Wie lade ich Dateien mit AJAX in CodeIgniter 3.0 hoch?

Das ist meine Form:

<form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint"> 
    <input type="text" name="i_complaint" id="id_complaint" class="cl_complaint" /> 
    <input type="file" name="i_file" id="id_file" class="cl_file" /> 
    <input type="button" id="btn_upl" value="Save your complaint" class="btn btn-primary" /> 
</form> 

Das ist mein AJAX ist:

<script src="<?php echo base_url('assets/inspinia/js/jquery-2.1.1.js'); ?>"></script> 
<script src="<?php echo base_url('assets/jquery-ui/jquery-ui.js'); ?>"></script>  
<script type="text/javascript"> 
$(document).ready(function() { 
    var url = "<?php print base_url(); ?>complaint/saveadd"; 
    $('#btn_upl').on('click', function() { 
     var formData = new FormData($(this).parent('form')[0]); 
     //alert(url); 

     $.ajax({ 
      url : url, 
      type  : 'POST', 
      data  : formData, 
      success : function (returndata) { 
       alert(returndata); 
      } 
     }); 
    }); 
}); 
</script> 

Dies ist mein Controller:

public function saveadd() { 
    $config['upload_path']  = FCPATH."assets/uploads/"; 
    $config['max_size']   = '307200'; 
    $config['file_name']   = "FILE - ".$_FILES['i_file']['name'];; 
    $config['overwrite']  = TRUE; 
    $this->load->library('upload', $config); 
    $this->upload->initialize($config); 
    if (! $this->upload->do_upload('i_file')) { 
     //return false; 
     redirect('app/'); 
    } else { 
     redirect('complaint/add'); 
    } 
} 

Was im Code falsch? Selbst der Alarm wird nicht ausgelöst. Ich möchte keine Plugins verwenden

+0

irgendwelche Fehler in der Konsole? Diese URL sieht nicht korrekt aus. Soweit ich weiß, benötigt sie einen vollständigen Pfad. –

+0

@SergioAlen keine Fehler – Shota

+0

Ich benutze die gleiche URL in einem anderen Projekt (auch mit Upload-Dateien, aber nicht mit Ajax) und es funktioniert gut – Shota

Antwort

0

Was ist falsch im Code? Selbst der Alarm wird nicht ausgelöst.

Hier ist was falsch. 1. Ihre Warnung wird bei AJAX-Erfolg aufgerufen, dh sobald ein Ajax-Aufruf erfolgreich abgeschlossen wurde. Aber in Ihrem CI-Controller leiten Sie den Ajax-Aufruf um, daher wird Ihr AJAX-Aufruf nie beendet und kehrt nie zum Block "Erfolgsfunktion (Rückkehrdaten):" zurück.

Jetzt, um dies zu lösen, ersetzen Sie einfach unter Code.

//return false; 
    redirect('app/'); replace with, 
    echo "upload failed";exit; 

UND

redirect('complaint/add'); replace with 
echo "upload finished";exit; 

Diese Rückkehr Werte werden in "returndata" js Variable zurückgegeben werden.

+0

Siehe auch den Link @sintakonte wurde im Kommentar geteilt, um die Bilddatei mit AJAX hochzuladen/zu übergeben. – JoshulSharma

+0

Die Datei wurde nicht hochgeladen und die Warnung funktioniert nicht. – Shota

+0

Debuggen Sie in Ihrem Controller.setze ein Echo "text"; exit; in der ersten Zeile in Ihrer "saveadd" -Funktion und überprüfen Sie Ihre AJAX-Anfrage in der Browser-Entwicklerkonsole. – JoshulSharma

0

Hier ist die Referenz der Upload-Datei mit Ajax und Codeigniter. Ich denke, es ist der beste Weg, um eine Datei mit Ajax hochzuladen.

https://code.tutsplus.com/tutorials/how-to-upload-files-with-codeigniter-and-ajax--net-21684 
Verwandte Themen