【问题标题】:Automatically filling a form and submitting it doesn't get the parameters to the server自动填写表单并提交它不会将参数获取到服务器
【发布时间】:2023-03-15 00:10:02
【问题描述】:

我有一个由 JS 自动填写的表格

我的表格是:

<form id="doSubmit" method="post">
    <input type="text" id="usr" />
    <input type="password" id="pwd" />
</form>

我的 JS 是:

document.forms["doSubmit"].elements["usr"].value = usr;
document.forms["doSubmit"].elements["pwd"].value = psw;
document.forms["doSubmit"].action = location.pathname + "user";
document.forms["doSubmit"].submit();

现在在 PHP 的下一页上,当我尝试使用时,我收到此错误 Undefined index,当我输入 print_r($_POST) 时,我收到 Array()

知道如何在下一页上发布表单数据吗?

【问题讨论】:

  • 因为这个问题没有意义......“在下一页上发布数据”是什么意思?我认为基于 answer+cmets 他的意思是他如何访问发布的数据。
  • @tobyodavies - 很公平;我通过阅读答案和 cmets 提出了实际问题并更改了标题。我不得不承认我的第一个想法是他在混合 JS 和 PHP; @sikas – 请记住,我们必须理解您的问题;尝试尽可能准确地制定它。

标签: php javascript forms dom


【解决方案1】:

您的input 元素需要有一个name 属性:

<form id="doSubmit" method="post" action="">
    <input type="text" id="usr" name="usr" />
    <input type="password" id="pwd" name="pwd" />
</form>

完成此操作后,您应该能够在接收 PHP 脚本的 $_POST 数组中看到 usrpwd 键。 (键是 HTML name 属性,值是对应的 value HTML 属性。)

所以,假设您的表单最终看起来像这样:

<form id="doSubmit" method="post" action="">
    <input type="text" id="usr" name="usr" value="someuser"/>
    <input type="password" id="pwd" name="pwd" value="somepassword"/>
</form>

您的 $_POST 数组如下所示:

Array (
  'usr' => 'someuser',
  'pwd' => 'somepassword'
)

jsFiddle example

【讨论】:

  • @Jacob Relkin:这对我不起作用,$_POST 仍然是空的
  • @Jacob Relkin:即使在为每个元素设置名称后也不起作用!
  • @sikas 这毫无意义。
  • 在 Firebug 中启用网络监控并检查发送到 PHP 脚本的 HTTP 标头,确保 POST 数组存在...
  • document.forms["doSubmit"].action = "../ajax/user";替换为 document.forms["doSubmit"].action = "../ajax/user/";动作结束时的 / 完成了这项工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多