我正试图通过表单PHP来查找json数据。文件正在下载,但dsnt获取了我定义的名称,并且在文件中只打印了我json数据中的两个字符。
里面的文件看起来像:
[{
当json数据出现时:
〔{"大小":〔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
您正遭受HTML注入漏洞的困扰。JSON中的"
正在破坏您的HTML:
例如,您构建的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,并使用jquery通过$(...).val(json_goes_here)
类型操作设置内容输入的值。