【发布时间】:2018-11-03 19:03:18
【问题描述】:
我正在尝试在 js 中创建一个锚点并单击它以触发文件的下载。这是我的代码:
var anchor = $('.vcard-hyperlink');
var windowUrl = window.URL || window.webkitURL;
anchor.attr({
href: 'data:text/plain;base64,' + btoa(unescape(encodeURIComponent(request.response))),
download: 'test.xml',
});
anchor.get(0).click();
其中 request.response 只是来自服务器的文档。我遇到的问题是 anchor.get(0) 结果未定义。我怎样才能解决这个问题?提前致谢
更新:这是整个场景
var request = new XMLHttpRequest();
request.open('GET', url + formatParams(data));
request.setRequestHeader('Authorization', 'Bearer ' + appsecurity.getBearerTokenWithoutHeader().accessToken);
request.onreadystatechange = function () {
if (request.readyState == XMLHttpRequest.DONE) {
var str = request.response;
var maxSizeForBase64 = 1048576; //1024 * 1024
var anchor = $('.vcard-hyperlink');
var windowUrl = window.URL || window.webkitURL;
anchor.attr({
href: 'data:text/plain;base64,' + btoa(unescape(encodeURIComponent(request.response))),
download: 'test.xml',
});
anchor.trigger('click');
}
}
}
request.send(data);
这是由客户端上的一个按钮调用的整个方法
【问题讨论】:
-
为什么不直接做
anchor.trigger('click');? -
您还需要显示相关的 HTML。如果
anchor.get(0)以undefined的形式返回,则您的 HTML 设置可能不正确。 -
按钮是 type="button" 并且锚点正确吗?你也可以发布HTML吗?
-
你还没有发布 HTML,这是我们需要看到的。
-
您的
request.send()之前似乎有一个过多的},而您的anchor.attr对象末尾还有一个额外的,。
标签: javascript jquery hyperlink xmlhttprequest anchor