【问题标题】:Using Javascript in HTML form to post to PHP在 HTML 表单中使用 Javascript 发布到 PHP
【发布时间】:2014-01-17 23:29:47
【问题描述】:

我正在尝试制作一个从 JSON 数组返回 CSV 文件的 php 脚本,但我无法将信息获取到脚本中。为了使这个 CSV 可下载,我需要 set the headers using php 并即时创建 CSV 文件(所以我不必将它存储在我的服务器上),因此我似乎需要将用户的浏览器重定向到我的 PHP 脚本(也就是没有 AJAX)。

我想发布 3 个变量。用户 ID、会话字符串和字符串化 JSON 数组。

我可以使用 Jquery 创建一个包含我的 JSON 数组值的输入,例如:

$('html-input-element').val(stringified-JSON-array);

但这似乎并不理想,因为这个 JSON 数组可能长达数千行。有没有办法纯粹用javascript来做到这一点?我也宁愿使用 POST 而不是 GET,因为会话字符串是敏感信息。非常感谢!

【问题讨论】:

  • 输入数千行有什么问题?如果您通过 AJAX 发送,也会发生同样的事情。
  • 好吧,当它已经是一个javascript变量时,将它添加到html中似乎有点草率。
  • 您没有将其添加到 HTML 中。您只是设置了一个隐藏的输入值,因此您可以将其包含在表单提交中。

标签: javascript php json forms


【解决方案1】:

只需使用 jQuery 和 ajax: JFYI:输入大小限制是服务器设置,无论您使用的是 ajax 还是带输入的表单 html:

<form id="downloaderForm" action="downloadCsv.php" method="post">
<intput type="hidden" name="json" id="jsonData" />
</form>

JQuery

 $("#jsonData").val(yourData);
 $("#downloaderForm").submit();

JS

document.getElementById("jsonData").value = yourData;
document.getElementById("downloaderForm").submit();

PHP

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=json-cconverted-to-csv.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo $csvData; // Your CSV Data

【讨论】:

  • 好吧,也许我理解错了,但我真的不想将这些文件存储在我的服务器上,所以我希望使用此处描述的方法即时创建文件:stackoverflow.com/questions/217424/… .棘手的是我需要确保他们应该能够使用他们的会话字符串和用户 ID 创建/访问文件。你怎么看?
  • 然后你应该将数据添加到表单中,通过js提交,让你的服务器的php脚本将它转换为CSV格式,设置正确的标题,用户不会被重定向,他会被要求下载文件
  • 那么,要将数据添加到表单中,您的意思是使用我描述的方法将其添加到html吗?或者有没有办法在JS中做到这一点?
  • 你上面写的是JS而不是HTML,这是唯一的方法,当然要添加到隐藏元素中
  • @user417669 将隐藏的输入元素视为 Javascript 变量,在表单提交期间自动发送到服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多