JS实现点击按钮,下载文件

本文介绍了一种通过创建form元素来解决使用ajax无法直接下载文件的问题,并提供了具体的JavaScript代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前几天和后台对接导出接口时,发现把接口地址赋值给href,发现下载不了。多次排查后,由于ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以通过ajax去请求该接口是无法下载文件的,所以我们创建一个新的form元素来请求接口。

   js部分

//方法二:通过form
        $eleBtn2.click(function(){
            var $eleForm = $("<form method='get'></form>");

            $eleForm.attr("action","https://codeload.github.com/douban/douban-client/legacy.zip/master");

            $(document.body).append($eleForm);

            //提交表单,实现下载
            $eleForm.submit();
        });
其中的地址换成后台传给你的就可以了。
Ext.onReady(function(){ // This function renders a block of buttons function renderButtons(title){ Ext.getBody().createChild({tag: 'h2', html: title}); new ButtonPanel( 'Text Only', [{ text: 'Add User' },{ text: 'Add User', scale: 'medium' },{ text: 'Add User', scale: 'large' }] ); new ButtonPanel( 'Icon Only', [{ iconCls: 'add16' },{ iconCls: 'add24', scale: 'medium' },{ iconCls: 'add', scale: 'large' }] ); new ButtonPanel( 'Icon and Text (left)', [{ text: 'Add User', iconCls: 'add16' },{ text: 'Add User', iconCls: 'add24', scale: 'medium' },{ text: 'Add User', iconCls: 'add', scale: 'large' }] ); new ButtonPanel( 'Icon and Text (top)', [{ text: 'Add User', iconCls: 'add16', iconAlign: 'top' },{ text: 'Add User', iconCls: 'add24', scale: 'medium', iconAlign: 'top' },{ text: 'Add User', iconCls: 'add', scale: 'large', iconAlign: 'top' }] ); new ButtonPanel( 'Icon and Text (right)', [{ text: 'Add User', iconCls: 'add16', iconAlign: 'right' },{ text: 'Add User', iconCls: 'add24', scale: 'medium', iconAlign: 'right' },{ text: 'Add User', iconCls: 'add', scale: 'large', iconAlign: 'right' }] ); new ButtonPanel( 'Icon and Text (bottom)', [{ text: 'Add User', iconCls: 'add16', iconAlign: 'bottom' },{ text: 'Add User', iconCls: 'add24', scale: 'medium', iconAlign: 'bottom' },{ text: 'Add User', iconCls: 'add', scale: 'large', iconAlign: 'bottom' }] ); } renderButtons('Normal Buttons'); ButtonPanel.override({ enableToggle: true }); renderButtons('Toggle Buttons'); ButtonPanel.override({ enableToggle : undefined, menu : {items: [{text:'Menu Item 1'},{text:'Menu Item 2'},{text:'Menu Item 3'}]} }); renderButtons('Menu Buttons'); ButtonPanel.override({ split: true, defaultType: 'splitbutton' }); renderButtons('Split Buttons'); ButtonPanel.override({ split: false, defaultType: 'button', arrowAlign: 'bottom' }); renderButtons('Menu Buttons (Arrow on bottom)'); ButtonPanel.override({ split: true, defaultType: 'splitbutton' }); renderButtons('Split Buttons (Arrow on bottom)'); }); // Helper class for organizing the buttons ButtonPanel = Ext.extend(Ext.Panel, { layout:'table', defaultType: 'button', baseCls: 'x-plain', cls: 'btn-panel', renderTo : 'docbody', menu: undefined, split: false, layoutConfig: { columns:3 }, constructor: function(desc, buttons){ // apply test configs for(var i = 0, b; b = buttons[i]; i++){ b.menu = this.menu; b.enableToggle = this.enableToggle; b.split = this.split; b.arrowAlign = this.arrowAlign; } var items = [{ xtype: 'box', autoEl: {tag: 'h3', html: desc, style:"padding:15px 0 3px;"}, colspan: 3 }].concat(buttons); ButtonPanel.superclass.constructor.call(this, { items: items }); } });
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值