如何获取从kendou上传成功或完成函数返回的值
本文关键字:成功 函数 返回 何获取 获取 kendou | 更新日期: 2023-09-27 18:04:53
我正在使用剑道UI上传控件。我已经像这样定义了剑道UI上传:
<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
}
});
控制器代码如下:
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);
}
返回代码后,我想检索完整功能的代码。我该怎么做呢?
您可以像这样获得成功函数的响应
function onSuccess(e)
{
var response = e.response.data();
}
返回json可以是
return Json(new { data = text }, "text/plain");
如果你只是传递一个字符串,你应该能够:
function onSuccess(e) {
var text = e.XMLHttpRequest.responseText;
}
如果需要,您也可以传回一个更复杂的对象:
// 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;
}
我将在这里将我的答案与其他有效答案一起添加。首先,您希望在success函数中获得返回的响应,而不是在完整的函数中:
$("#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
});
on success函数返回一个对象(通常人们将其命名为e)
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
}
}
我的console.log条目返回以下数据:
console.log值
这是我从服务器返回数据的方式:
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;
}
响应。Content返回我在e.response中的新IdHttpStatusCode。Ok返回我的状态200。如果你检查响应,还会返回一堆其他数据
注意,要使用HttpResponseMessage和HttpStatuseCode,你需要在你的类中包含以下名称空间:
using System.Net.Http;
using System.Net;