如何获取从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);
}

返回代码后,我想检索完整功能的代码。我该怎么做呢?

如何获取从kendou上传成功或完成函数返回的值

您可以像这样获得成功函数的响应

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;