2013-03-20 13 views
9

Kendo UI yükleme denetimi kullanıyorum. Böyle Kendo UI yükleme tanımlamış:Kendoui yükleme başarısından döndürülen değer nasıl alınır veya işlev tamamlanır

<input type="file" name="resume" /> 
$("#file").kendoUpload({ 
    async: { 
     saveUrl: "/Home/SaveResume",    
     autoUpload: true 
     },    
     complete: function (e) 
     { 
      // here i want to get the text that is returned from the controller 
     } 
}); 

kontrolör kod gibidir: Ben tamamlama işlevinde kodunu almak isteyen

public ActionResult SaveResume(HttpPostedFileBase resume) 
{ 
    var text; 
    // code for the file to convert to text and assign it to text 
    return Json(text, JsonRequestBehavior.AllowGet); 
} 

kodu döndükten sonra. Bunu nasıl yapabilirim?

+0

Eğer 'console.log (e)' döndü neler olduğunu görmek için denediniz mi? Ben 'e' bir 'olay' değil, 'srever'den döndürülen veri' olmaya istekliyim. Eğer 'var data = $ .parseJSON (e) 'kullanırsanız, muhtemelen kontrol cihazınızın tanımladığı özelliklere sahip bir veri nesnesiyle sonuçlanırsınız. – Ohgodwhy

+0

Yah veri değişkeni, "Sunucu Yanıtı: gerçek dizge" gibi dizgeyi içerir. – Pa1

+0

Döndürülmüş olan öğe bir nesnedir, parseJSON kullandıysanız ve gönderdiğiniz nesne değildi? nesneyi buraya gönderin, jsfiddle kullanın ve kaydedin. – Ohgodwhy

cevap

5

Sen yanıtını alabilirsiniz Bu

function onSuccess(e) 
{ 
    var response = e.response.data(); 
} 

gibi başarı işlevine dönüş json nerede olabilir

return json(new { data=text, "text/plain" }); 
+0

gibi diğer formatları gönderebiliriz lütfen nukefusion'ın cevabına bakın. 'E.response.data() 'çalışmıyor. – 8protons

+0

Yanıtın İçerik Türü, bir JSON nesnesini döndürmek de dahil olmak üzere, olay işleyicisine veri döndürmek için "text/plain" olmalıdır. Diğer herhangi bir içerik türü bir hata olarak ele alınacaktır. Yanıtın bir nesne olması beklendiği için, 'e.response.data()', 'e.response.data' olmalıdır. Denetleyiciden bir 'data 'özelliği içeren nesneyi döndürmek için kod, Json (yeni {data = text}," text/plain ");' olmalıdır. – Suncat2000

7

sadece bir dize geçirerek Eğer geri yapmanız gerekir: Gerekirse,

function onSuccess(e) { 
    var text = e.XMLHttpRequest.responseText; 
} 

Ayrıca sırt daha karmaşık bir nesneyi geçebileceği:

// Object 
public class MyObject 
{ 
    public int ID { get; set; } 
    public string Text { get; set; } 
} 

// Controller Action 
public virtual ActionResult Upload(HttpPostedFileBase file) 
{ 
    return this.Json(new MyObject(), "text/plain"); 
} 

// Javascript Handler 
function onSuccess(e) { 
    var response = jQuery.parseJSON(e.XMLHttpRequest.responseText); 
    var id = response.ID; 
    var text = response.Text; 
} 
+0

Sadece metin/düz geri dönmeliyiz. html veya xhtml – Pa1

1

Cevabımı buraya diğer geçerli yanıtların yanı sıra ekleyeceğim. yerine tam fonksiyonun başarı işlevinde döndürülen yanıt almak isteyeceksiniz ilk olsa:

başarı işlevini
 $("#files").kendoUpload({ 
     async: { 
      saveUrl: url, 
      removeUrl: removeUrl, 
      autoUpload: true 
     }, 
     select: onFileSelect,  // function for when a file is selected 
     success: onFileSuccess,  // function that returns response after upload 
     complete: onFileComplete, // function after success 
     remove: onFileRemove,  // function for when a file is removed 
     }); 

Bir nesneyi

function onFileSuccess(e) { 

    console.log("e.response", e.response); 
    console.log("e.operation", e.operation); 
    console.log("e.XMLHttpRequest.status", e.XMLHttpRequest.status); 

    //e.operation is upload or remove 
    if (e.operation === "upload") { 
     // a file was added, get the response 
     var fileid = e.response; 
    } else { 
     // Do something after a file was removed 
    } 
} 

My konsolu (normalde insanlar e isim) döndürür

console.log values

Bu benim sunucudan benim veri döndürecek nasıl: .log girişleri bu verileri döndürür

public HttpResponseMessage InsertTempFile() 
    { 
     HttpPostedFile file = System.Web.HttpContext.Current.Request.Files[0]; 

     //........ 
     // Code that adds my file to the database 
     // and generates a new primary key for my file 
     //......... 

     var response = new HttpResponseMessage(HttpStatusCode.OK); 
     response.Content = new StringContent(myNewId.ToString()); 

     return response; 
    } 

response.Content HttpStatusCode.Ok Eğer yanıtını inceleyebilirsiniz eğer yanı döndürülen diğer verilerin de birkaç tane var 200 olan durumumu döndüren e.response benim yeni kimliği döndürür. HttpResponseMessage kullanmak ve HttpStatuseCode Sınıfınızda aşağıdaki ad alanları dahil etmek gerekir

Not:

using System.Net.Http; 
using System.Net; 
İlgili konular