[英]How to get and pass a XML string on php to java script from mysql
所以我得到了这个代码:
<input type='button' value='clickme' onclick='download(\"" . $rowtable['Protocolo'] . ".xml\",\"" . $rowtable['XML']. "\");'/></input>
<script>
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}
</script>
它从我的数据库中得到 2 个结果,即一个 String(Protocolo) 和一个 TEXT(XML)。 但问题是我的 TEXT(XML) 数据如下所示:
<?xml version="1.0" encoding="UTF-8"?><enviNFe versao="4.00" xmlns="asdasdasdasdasd"><idLote>1</idLote><indSinc>1</indSinc><NFe xmlns="asdsdasadsad">
正如你所看到的,它上面有很多“。它有很多错误,代码。所以我的问题是,我怎样才能将所有这些 $rowtable['XML'] 转换成一个正确的字符串。所以我可以将它传递给JS,所以我可以下载它。
如果您有任何更好的方法从我的数据库下载此 XML 数据,也欢迎。
您可以使用urlencode
在 php 中对 xml 进行urlencode
,并直接在 javascript 中使用它的值。
<input type='button' value='clickme' onclick='download(\"" . $rowtable['Protocolo'] . ".xml\",\"" . urlencode($rowtable['XML']). "\");'/></input>
<script>
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + text);
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}
</script>
您在按钮input
属性中缺少对 Javascript 和 HTML 的转义。 使用urlencode()
或base64_encode()
(在 PHP 中)会对特殊字符进行编码,这样它们就不会破坏 JS 或 HTML 代码。
但是,如果您使用a
元素,则无需 JavaScript 即可完成此操作。
<html>
<body>
<?php
$data = '<foo>Example String</foo>';
$fileName = 'demo.xml';
?>
<a
class="DownloadButton"
href="data:text/plain;charset=utf8,<?=urlencode($data)?>"
download="<?=htmlspecialchars($fileName)?>">Download</a>
</body>
</html>
数据被编码并放入数据 URL 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.