我试图通过PHP形式下载json数据。 文件正在下载,但dsnt获取我定义的名称,在文件中只打印了我的json数据中的两个字符。
里面的文件看起来像:
[{
当json数据显示时:
[{" SIZE":[16,16]}]
他是代码:
var dataAsText = JSON.stringify(data);
var filename=$("#menu-save-text").val();
var _content = dataAsText;
jQuery('<form action="download.php" method="POST"><input type="hidden" name="filename" value="'+filename +'" /><input type="hidden" name="content" value="'+_content+'" /></form>').appendTo('body').submit().remove();
PHP:
<?
$filename=$POST["filename"];
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=".$filename."");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
echo $_POST["content"];
?>
下载的文件名是download.php
答案 0 :(得分:1)
您正遭受HTML注入漏洞的困扰。 JSON中的"
会破坏您的HTML:
e.g。你构建的HTML看起来像这样:
[..snip..]<input type="hidden" name="content" value="[{"SIZE":[16,16]}]" />[..snip..]
浏览器会将其解析为:
input:
value="[}" // proper attribute
size":[16,etc... // unknown/illegal html attribute
换句话说,您需要引用您的JSON以在html表单属性中使用,例如:将所有"
更改为"
。那个或使用正确的dom方法构建HTML,并通过$(...).val(json_goes_here)
设置内容输入的值 - 用jquery键入操作。