【问题标题】:Passing POST Data to PHP via JS fails通过 JS 将 POST 数据传递给 PHP 失败
【发布时间】:2013-07-17 15:45:53
【问题描述】:

我第一次添加了一些巨大的东西,混合了 JS、PHP、THREE 和许多其他东西。这是我尝试过的。

当有人在人体上单击 THREE.js 场景时,选择人体的各个部分和 javascript,然后将其添加到我想使用 PHP / MySQL 将所选内容保存到数据库中。

THREE.js 场景有效,我可以选择/取消选择事物,生成的动态 HTML 输出也适用。例如,我得到一个这样生成的表单:

<canvas width="1680" height="949"></canvas>
<div id="Description">Will be added to database:</div>
<form id="BodyParts" method="POST" action="index.php?s=cinput">
    <input type="checkbox" id="leg_right" name="leg_right" disabled="" value="leg_right">
    <div id="leg_right_Description">Rechtes Bein</div>
    <input type="checkbox" id="leg_left" name="leg_left" disabled="" value="leg_left">
    <div id="leg_left_Description">Linkes Bein</div>
    <input type="checkbox" id="torso_top" name="torso_top" disabled="" value="torso_top">
    <div id="torso_top_Description">Obertorso</div>
    <input type="submit" value="Speichern" id="Submit">
</form>

所以,点击提交按钮后,我只是在使用 var_dump($_POST);在我接收 cinput.php 文件上。但它给出了一个空数组。但是,当尝试重新加载网站时,Chrome 告诉我一些数据已发送,我需要再次验证。你知道我的意思。上面生成的 HTML 表单到底是如何不起作用并且不发送我可以在 PHP 中使用的 POST 数据的?

【问题讨论】:

  • 发布一些可读的代码而不是一行代码怎么样?
  • @Styphon:因为真的没什么可发的。上面的代码是我点击的 JS / THREE.js 场景中自动生成的表单。它基本上只是提交的表单()和使用 var_dump($_POST); 的接收文件;没有什么要发布的了!
  • 这并不能阻止你进入并格式化它以便阅读......
  • @Shiuyin: styphon 说你应该格式化代码。不是每个人都有 10 英里宽的显示器,因此他们可以看到您发布的单行代码。至少花时间正确格式化它,换行,将每个标签放在单独的行上,使用适当的缩进等......

标签: php javascript post


【解决方案1】:

您的所有输入字段中都有disabled 属性。仅存在此属性,即使其值为空 ("") 也会导致该字段被禁用。禁用的字段与表单的其余部分一起提交。由于您的整个表单只有禁用的输入,因此您什么都不提交。

例如

<input type="text" value="foo" disabled="" />
<input type="text" value="bar" disabled="false" />
<input type="text" value="baz" disabled="disabled" />

所有这三个输入都被禁用,即使按照“人”逻辑,您也希望只有最后一个被实际禁用。

您的提交按钮未被禁用,但由于没有 name 属性,它也不会向表单提交任何内容。

【讨论】:

  • 嗯?我添加它们是因为我想将这些复选框设置为“只读”。所以正如你所说的“禁用”不像“只读”。噗。谢谢!
  • disabled 将它们基本上变成了窗口装饰。它们看起来像输入元素,但不像输入元素。 readonly 使它们处于启用状态,但不可更改。
  • 嗯,但是当我现在使用 JS 来设置 input.readonly = true;我仍然可以更改复选框的值(我可以选择/取消选择)。为什么?
猜你喜欢
  • 2012-03-08
  • 2012-07-06
  • 2023-01-18
  • 2018-10-03
  • 2019-06-11
  • 2020-04-01
  • 2014-04-30
  • 2023-01-05
  • 1970-01-01
相关资源
最近更新 更多