2017-03-12 1 views
0

Ich habe eine Methode in meinem Controller, die einige Änderungen in der Datenbank nach Erhalt eines Dateinamens, der auf den Server hochgeladen wird. Auch diese Methode der fileNameOrigin und fileNameUnique bekommen (um für das Speichern im Server-Ordner heruntergeladen werden)Wie erhalte ich Daten von der JSon-Methode?

public JsonResult Upload() 
     { 
var upload = Request.Files[file]; 
string fileNameOrigin = System.IO.Path.GetFileName(upload.FileName); 
string fileNameUnique = String.Format("{0}_" + fileNameOrigin, 
         DateTime.Now.ToString("yyyyMMddHHmmss")); 
//there is more code that isn't needed in my case 
return Json(fileNameOrigin, fileNameUnique); 
     } 

So, hier ist die Frage - wie senden und diese Daten auf der Client-Seite zu empfangen?

$('#uploadFile').on('change', function (e) { 
      e.preventDefault(); 
      var files = document.getElementById('uploadFile').files;    
      if (files.length > 0) { 
       if (window.FormData !== undefined) { 
        var data = new FormData(); 
        for (var x = 0; x < files.length; x++) { 
         data.append("file" + x, files[x]); 

        } 

        $.ajax({ 
         type: "POST", 
         url: '@Url.Action("Upload", "ChatRooms")', 
         contentType: false, 
         processData: false, 
         data: data, 
         success: onSuccess, //here I need to receive data and do smth with it 
         error: onError 


        }); 
       } 
      } 
     }); 
+0

Wo ist Ihre onSuccess-Funktion? –

+0

@ FilipKováč in der gleichen Datei mit der obigen Funktion. onSuccess alarmiert nur Benutzer, diese Datei wurde erfolgreich hochgeladen –

Antwort

3

erstellen anonymes Objekt mit den Eigenschaften, die erforderlich sind, und dann das einzelne Objekt an die JSON Methode übergeben wie:

var data = new { 
        FileNameOrigin = fileNameOrigin, 
        FileNameUnique = fileNameUnique 
       }; 

return Json(data); 

Im Erfolg Rückruf von Ajax, Sie darauf zugreifen können, für die nur zu schau es wird auf log Konsole arbeiten, um zu sehen, welche Server wie zurückgekehrt ist:

success: function(data) { 

     console.log(data); 
     }, 

könnten Sie auch datatype in ajax-Aufruf zu 012 angeben müssen, die vorschreibt, dass JSON vom Server erwartet wird, als Reaktion auf diese Ajax-Aufruf zu zurückgegeben werden:

dataType: "json" 

Hoffe, es hilft!

+0

gut, okay. Und wie bekomme ich diese Daten auf der Client-Seite? Wie man es benutzt? –

+1

@LabLab in onSuccess (Daten) Sie haben Zugriff auf Daten von Anfrage als normales Objekt zum Beispiel data.fileNameOrigion. Versuchen Sie console.log (Daten), wo Sie die Parameter des Objekts finden können –

+0

@ FilipKováč wow, habe nicht angenommen, es könnte so einfach sein! Thnx, ich werde versuchen, das –

Verwandte Themen