首页 > 其他分享 >MVC4向后台传输数据(POST)

MVC4向后台传输数据(POST)

时间:2023-04-04 09:56:32浏览次数:35  
标签:MVC4 const xhr paras 传输数据 window var new POST

前端

const xhr = new XMLHttpRequest()
                const fileName = '小题分表.xls'
                xhr.open('post', '@Url.Action("ExportData")', true)
                xhr.responseType = 'blob'
                //xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8')
                let self = this;
                let data = {
                    columns: self.columns,
                    students: self.data,
                    title: "小题分表"
                }
                var param = JSON.stringify(data);

                let ss = new FormData();
                ss.append('data', param);

                xhr.send(ss)
                xhr.onload = function () {
                    debugger
                    const type = xhr.getResponseHeader('Content-Type')

                    const blob = new Blob([this.response], { type: type })
                    if (typeof window.navigator.msSaveBlob !== 'undefined') {
                        window.navigator.msSaveBlob(blob, fileName)
                    } else {
                        const URL = window.URL || window.webkitURL
                        const objectUrl = URL.createObjectURL(blob)
                        if (fileName) {
                            var a = document.createElement('a')
                            // safari doesn't support this yet
                            if (typeof a.download === 'undefined') {
                                window.location = objectUrl
                            } else {
                                a.href = objectUrl
                                a.download = fileName
                                document.body.appendChild(a)
                                a.click()
                                a.remove()
                            }
                        } else {
                            window.location = objectUrl
                        }
                    }
                }

后端

[AllowAction]
        [HttpPost]
        public FileResult ExportData(string data)
        {
           
            var dataString = data.ToString();
            var paras = new
            {
                Title="",
                Columns = EmptyArr<string>(),
                Students = EmptyArr<Dictionary<string, string>>()
            };

            paras = JsonConvert.DeserializeAnonymousType(dataString, paras);

            var dt = new DataTable();

            foreach (string item in paras.Columns)
            {
                dt.Columns.Add(item);
            }
           
            foreach (Dictionary<string, string> item in paras.Students)
            {
                var row = dt.NewRow();

                foreach (var key in item.Keys)
                {
                    row[key] = item[key];
                }
                dt.Rows.Add(row);
            }

            var stream = dt.SaveToMemoryStream(paras.Title);
            return File(stream, "application/ms-excel", "成绩单.xls");
        }

  

public static T[] EmptyArr<T>()
        {
            return EmptyArray<T>.Value;
        }

        internal static class EmptyArray<T>
        {
            public static readonly T[] Value = new T[0];
        }

  

快捷翻译 - 快到离谱!     划词翻译 自动发声 自动添加生词本 快捷翻译 - 快到离谱!     划词翻译 自动发声 自动添加生词本 快捷翻译 - 快到离谱!     划词翻译 自动发声 自动添加生词本

标签:MVC4,const,xhr,paras,传输数据,window,var,new,POST
From: https://www.cnblogs.com/y5s78/p/17285367.html

相关文章

  • 在Spring中如何通过BeanFactoryPostProcessor和BeanPostProcessor来做一点好玩的事情
    在Spring中如何通过BeanFactoryPostProcessor和BeanPostProcessor来做一点好玩的事情介绍BeanFactoryPostProcessor跟BeanPostProcessor是Spring为开发者提供的在Bean加载时候的扩展点。灵活的运用这两个扩展点可以帮助我们做一些好玩的事情,它们为我们提供了无限的扩展能力。Be......
  • Postman文件上传报错:The current request is not a multipart request解决方法
    主要报错语句为: Thecurrentrequestisnotamultipartrequest就是说当前这个请求不是一个multipartrequest,也就是说不是上传文件的请求。那怎么办呢?这里我们需要知道一点,spring在处理入参的时候,遇到MultipartFile相关就会先去校验。(在controller中会用MultipartFile......
  • IDEA Spring-boot 使用@Component注解的工具类,用@Autowired注入 @Service或者@Reposit
    IDEASpring-boot使用@Component注解的工具类,用@Autowired注入@Service或者@Repository会空指针(使用@PostContruct)原文链接:https://blog.csdn.net/ld_secret/article/details/104627597/使用idea编译器时,对于spring-boot的项目,大都使用注解,那么:一、现象:@Component标注的U......
  • Postman测试文件上传接口
         定义请求方式和请求路径请求体选择bodybody下选择form-data在参数中输入filekey值输入完file后,在下拉框中选择file此时value会显示一个SelectFiles按钮,点击按钮即可打开我的电脑并选择需要上传的文件点击发送请求即可如何该接口需要请求头......
  • IIS6 MVC4 路由失效 无法访问
    大致找了网站上IIS6MVC4路由失效文章不少,对症下药的木有啊,折腾了我半个下午。报错内容如下:==========================================“/”应用程序中的服务器错误。无法找到资源。说明:HTTP404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂......
  • Vue3【Axios网络请求(GET、POST 、并发请求、全局配置 )】(八)-全面详解(学习总结---从入
    ......
  • EFCore连接PostgreSql
    1、PostgreSql安装(windows安装)1.1、下载下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads如下图,选择windows版本的安装包下载 1.2、安装直接双击安装,期间会让你选择安装路径,数据存储路径,默认密码,端......
  • HTTP 方法:GET 对比 POST
    什么是HTTP?超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。HTTP的工作方式是客户端与服务器之间的请求-应答协议。web浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。举例:客户端(浏览器)向服务器提交HTTP请求;服务器向客户端返回响应。响......
  • Postman 接口测试工具
    1、Postman概述Postman是一款非常流行的API接口测试工具。对于一个API来说,输入的请求(Request)包括URL、method、RequestCookies、RequestHeaders和RequestBody;收到请求后,API会回复响应(Response),包括ResponseHeaders和ResponseBody。Postman可以很好的模拟浏览器并向API......
  • PostgreSQL 13 pacemaker 高可用集群
    环境介绍 操作系统版本CentOSLinuxrelease7.8.2003(Core)  数据库版本psql(13.10)  PCS集群版本[root@hd-clw-select-proxysql01~]# rpm-qa|greppacemakerpacemaker-libs-1.1.23-1.el7_9.1.x86_64pacemaker-cli-1.1.23-1.el7_9.1.x86_64pacemaker-1.1.2......