Safari中<form>的问题 - 只需首次点击即可POST到_blank目标

und*_*ned 3 php forms safari post

我正在使用PHP在页面上生成10个表单,这些表单将图像作为按钮附加,并将POST隐藏值附加到_blank目标.这在Firefox中运行正常,所有10个按钮都提交并发布到新窗口.在Safari中,只有我点击的第一个按钮才能工作(无论我选择哪一个),之后没有任何按钮(表格)提交并POST到新窗口(!!!什么会继续?)

继承人的代码 -

$id=getId();
echo "<form name=\"clickthrough$id\" action=\"click_through.php\" method=\"POST\" target=\"_blank\"><input type=\"image\" src=\"images/buttons/buynow_a.gif\" name=\"buynow\"/><input type=\"hidden\" name=\"id\" value=\"".$id."\"/></form>";
Run Code Online (Sandbox Code Playgroud)

这里没什么奇怪的 - 这个id实际上是我数据库中一首歌的id,我已经简化了这里的显示 - 但我把它包含在表单名称的末尾只是因为这导致了问题.

所以回顾一下,我最终在页面上有10个立即购买按钮 - 所有按钮都应该发布到PHP脚本.脚本运行正常.然而在safari中,一旦我按下任何立即购买按钮,所有其他人都停止工作(直到我刷新页面)

为什么是这样?

- 这是为按钮生成的最终html

<form name="clickthrough1728" action="click_through.php" method="POST" target="_blank"><input type="image" src="images/buttons/buynow_a.gif" name="buynow"/><input type="hidden" name="id" value="1728"/><input type="hidden" name="location" value="UK"/></form>

<form name="clickthrough1724" action="click_through.php" method="POST" target="_blank"><input type="image" src="images/buttons/buynow_a.gif" name="buynow"/><input type="hidden" name="id" value="1724"/><input type="hidden" name="location" value="UK"/></form>

<form name="clickthrough1718" action="click_through.php" method="POST" target="_blank"><input type="image" src="images/buttons/buynow_a.gif" name="buynow"/><input type="hidden" name="id" value="1718"/><input type="hidden" name="location" value="UK"/></form>
Run Code Online (Sandbox Code Playgroud)

....

我刚刚尝试将其复制到一个新的html文件并进行测试,同样的事情发生了 - 第一次点击将打开一个新窗口,但之后没有按钮会发布表单

tee*_*one 5

使用以下代码进行快速检查就可以了(Mac上的Safari 5)

for($id = 1; $id < 11; $id++) {
   echo "<form name=\"clickthrough$id\" action=\"sandbox/_TestServer.php\" method=\"POST\" target=\"_blank\">
   <input type=\"image\" src=\"images/buttons/buynow_a.gif\" name=\"buynow\"/>
   <input type=\"hidden\" name=\"id\" value=\"".$id."\"/>
   </form>";
}
Run Code Online (Sandbox Code Playgroud)

所以它可能是你的$id.生成html并像Pekka建议的那样显示它

编辑 我不能告诉你safari-windows-land出了什么问题,但是我已经改变了代码,如下所示在VM上测试它(Win XP,Safari5)它的工作原理:

for($id = 1; $id < 11; $id++) {
   echo "<form name=\"clickthrough$id\" action=\"_TestServer.php?$id\" method=\"post\" target=\"_blank\">
   <input type=\"image\" src=\"add.png\" name=\"buynow\"/>
   <input type=\"hidden\" name=\"id\" value=\"".$id."\"/>
   </form>";
}
Run Code Online (Sandbox Code Playgroud)

每一种形式都有其"独特"的行动目标?$id,这种接缝可以解决问题

编辑链接和文件已删除