Javascript 点击JS中的锚点

Javascript 点击JS中的锚点,javascript,jquery,hyperlink,xmlhttprequest,anchor,Javascript,Jquery,Hyperlink,Xmlhttprequest,Anchor,我试图在js中创建一个锚,并以这种方式单击它以触发文件下载。这是我的代码: var anchor = $('.vcard-hyperlink'); var windowUrl = window.URL || window.webkitURL; anchor.attr({ href: 'data:text/plain;base64,' + btoa(unescape(encodeURIComponent(request.r

我试图在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只是来自服务器的文档。我的问题是,锚定。获取(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);
这是通过客户端上的一个按钮调用的整个方法

  • 正确地加载jQuery,并且
  • 有一个与该类名的链接
  • 您单击的按钮不提交页面
  • 响应返回一个正确的字符串
您提供的代码应该可以工作

这适用于-mime类型text/xml

var-anchor=$('.vcard-hyperlink');
anchor.attr({
//href:'data:text/plain;base64,'+btoa(unescape(encodeURIComponent(request.response)),
href:"数据:text/xml;charset=utf-8;base64,PD94BWWGDMVYC2LVBJ0IMS4WIBLBMNvzgluzz0IVVRGLTGIPZ4NCAGIDX2Y2FYZHMGEG1SBNM9INVYBJPZXRMONBHCMFTCZP4BWW6BNM6DMNHCMQTNC4WIJ4NC4NCJ4NCIAGICAGPPHZYXJJJJJJJJKPG0ICAGIDCIDXBJ48DGV4DD5TAW1VBIBQZJYZWFZD8L3RLEHQ+PC9MBJ4NCIAGICAGICAGIZ8BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ2LCogICAgICAgICA8YWRkaXRpb25hbC8+Dqogicagicagica8chjlz4nciagicagicagidxzdwzmaxg+AW5NLIBQCJWvc3Vmzml4pg0kicagicagicagPhn1zmPed5NLLnjWvc3Vmzml4pg0kicagidWbJ4nciagicagic8ymrhet48ZGFZT4T4ltayMD8L2RhDGu+PC9IzGF5pg0kicagicagid8LbWbWbWc5PyC9KyC9KyC9KyC9KyCdKyC9KyCdKyKyCdKyCdKyKyCdKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKy(2)中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的一个中国的政府的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的政府的一个中国的一个中国的一个中国的政府的政府的一个中国的政府的WvcGFyyw1ldgvyCZ4NCIAGICAGICGIXYW5NDWFNZS10YWC+ZW48L2xHBMD1YWDLXRHZZ4NCIAGICAG8L2xHBMC+DQoGICAGICGG9YZ4NCIAGICAGIDGIXWYBWV0ZXJZPJX0EXBLPJX0ZX0PNDVCMS8RLEHQ+PC90EXBLPJWVCGFYYW1LDGVYC4NCIAGICAGICGIK0Z0ZZ0ZZZZ0PLZWDMLLPC90ZX0PG0K0PGIK0PGIK0K0K0PGIZ0PGIZ0KJ0KJ0PGIKJ0KJ0KJ0KZZZZZ0PNDVIK8PNDVIK8CGIK8CGIKG8CGIKJJJJJJJ8CGIKG8CGIKJJJJ83R5cGU+DQogicagicGagIdxYWJLBD48DGV4DD5TAW1VbibqzJYZWF1BhQnciagidI4NZugYM91Bc4GTGF1cMLLCIwgWc3VPdGdGdGdGdJmWdGdJmWdGdGdGdGdGdGdGdGdGdGdGdJdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdAGIDXSB2NHBGL0ET5RDWVIZWM8L2XVY2FSAXR5PG0KICAGICAGGAGPHJLZ2LVBJ5RQZWVCMVNAW9UPG0KICAGICAGICAGGAGPGNVZGU+RZFWIDJNMJWY29KZT4NCIAGICAGIDxJB3VUDHJ5PKMKFKY291BNRYET4NCIAGICAGICAGICAG8L2FKCJ4NCIAGICAGICAGIC8DGVSPG=”,
下载:“test.xml”
});
anchor.get(0)。单击();


为什么不直接执行
anchor.trigger('click');
?您还需要显示相关的HTML。如果
anchor.get(0)
返回为
未定义
,您可能无法正确设置HTML。按钮为type=“button“锚是对的吗?你也可以发布HTML吗?你还没有发布HTML,这就是我们需要看到的。在你的
请求.send()
之前,你似乎有一个过多的
,在你的
锚定.attr
对象的末尾有一个额外的
。这个问题不应该结束,因为这个问题无法重现吗?或者,在我们提供答案之前,我们是否应该等待并看看OP的HTML是什么样子?当然,但我很好奇是否有可能强制这样的下载。如果问题结束了,它就结束了。另外,你的两个片段之间有什么区别?我看不出来。你的两个代码片段是否都有语法错误,在
attr
对象的末尾有一个尾随的
。我把它拿走了