【问题标题】:How to receive a data from the JSon method?如何从 JSON 方法接收数据?
【发布时间】:2017-03-12 13:07:39
【问题描述】:

我的控制器中有一个方法,它在收到上传到服务器的文件名后提交数据库中的一些更改。此方法还获取fileNameOriginfileNameUnique(要下载以保存在服务器文件夹中)

 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);
        }

那么,问题来了——如何在客户端发送和接收这些数据?

$('#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


                    });
                }
            }
        });

【问题讨论】:

  • 你的 onSuccess 函数在哪里?
  • @FilipKováč 在与上述函数相同的文件中。 onSuccess 只是提醒用户,该文件已成功上传

标签: javascript jquery json asp.net-mvc


【解决方案1】:

使用所需的属性创建一个匿名对象,然后将该单个对象传递给 JSON 方法,例如:

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

return Json(data);

在 ajax 的成功回调中,您可以访问它,只是为了检查它是否正在工作,在控制台上登录它以查看服务器返回的内容:

success: function(data) {

       console.log(data);
      },

您可能还需要在对 json 的 ajax 调用中指定 datatype,这表示服务器应返回 JSON 以响应此 ajax 调用:

dataType: "json"

希望对你有帮助!

【讨论】:

  • 好吧,好吧。我如何在客户端接收这些数据?怎么用?
  • @LabLab 在 onSuccess(data) 中,您可以作为普通对象访问请求中的数据,例如 data.fileNameOrigion。尝试 console.log(data) 在那里你可以找到该对象的参数
  • @FilipKováč 哇,没想到会这么容易! thnx,我试试这个
  • 不起作用(从浏览器检查器中获取)function onSuccess(data) { var fileNameOrigin = data.fileNameOrigin; fileNameOrigin = undefined var fileNameUnique = data.fileNameUnique; fileNameUnique = undefined Materialize.toast('File uploaded '+ fileNameOrigin, 3000); };
  • 使用console.log(data);查看服务器返回了什么,确定调用成功吗?
猜你喜欢
  • 1970-01-01
  • 2017-11-25
  • 2014-07-24
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 2017-02-19
相关资源
最近更新 更多