1

我有两个文件,一个主页 scada.php 和一个子页面 site.php。Scada.php 包含这样的链接:

<FORM action="site.php" method="post">
<li><td class="normal"><input type="image" name="sitename" 
value="Dublin" src="radiotower.jpg" alt="Dublin" title="Dublin"/>
Dublin
</td></li>
</form>

Site.php 在这里访问站点的名称:

<?php
 $site = $_POST["sitename"];
 echo "<title id='title'>".$site."</title>";
?>

然后它用 JS 检索它以显示在页面上并在数据库查询中使用:

<script>
var site = document.getElementById("title").innerHTML;
document.getElementById("alert").innerHTML = "<h2>"+site+"</h2>";
</script>

我检查了站点名称的字符串长度,以确保它只包括名称的字符(“都柏林”)而不是 HTML 标题标签,并且长度正确为 6 个字符。

这在 Chrome 中运行良好;一切顺利,按预期运行。在 IE 和 Firefox 中,它会发出一个错误,指出“站点名称”是未定义的索引。我在 site.php 中的全局变量上运行了一个 vardump,结果是 Chrome 出现了 3 个变量(sitename_x、sitename_y 和 sitename)。Firefox 和 IE 只出现了两个(sitename_x 和 sitename_y),并且缺少站点名。

我搜索了仅在 Firefox 和 IE 中出现的 $_POST 问题,但没有发现任何有用的东西。有人提到提交按钮没有被按下,但这绝对不是这里的问题,因为与页面交互的唯一方法是按下输入按钮。变量站点名到底在哪里迷路了?

编辑:我最初有点不清楚。该表单包含多个输入,因此更准确:

<FORM action="site.php" method="post">
<li><td class="normal"><input type="image" name="sitename" value="Dublin"
src="radiotower.jpg" alt="Dublin" title="Dublin"/>
Dublin
</td></li>
<li><td class="normal"><input type="image" name="sitename" value="Temple" 
src="radiotower.jpg" alt="Temple" title="Temple"/>
Temple
</td></li>
</FORM>
4

2 回答 2

2

图像表单输入应仅返回单击它的 x 和 y 坐标。我会说 Chrome 在这里是错误的,并且没有通过返回名称和值对以及坐标来遵循标准

为站点名称创建一个单独的隐藏输入,你会很高兴,比如:

<form>
  <input type="hidden" name="sitename" value="Dublin" />
  <input type="image" name="siteimg" src="radiotower.jpg" />
</form>

编辑:如果使用 jQuery 不是问题,我认为你最好使用这样的方法

<form action="" method="post" id="form">
    <div><img src="radiotower.jpg" alt="Dublin" title="Dublin" class="location" /></div>
    <div><img src="radiotower.jpg" alt="Temple" title="Temple" class="location" /></div>
    <div><input type="hidden" name="sitename" id="sitename" value="" /></div>
</form>

<script>
$(function() {
    $('.location').click(function() {
        var site = $(this).attr('alt');
        $('#sitename').val(site);

        $('#form').submit();
    });
});
</script>

编辑 2:将此添加到您的 HTML 以包含 jQuery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

于 2013-02-28T16:05:48.410 回答
0

如果预期的值是“都柏林”,那么输入类型应该是text正确的——Chrome 可能足够清晰,可以识别输入实际上是文本,而 FF 和 IE 可能更容易上当,甚至不会尝试设置变量。

于 2013-02-28T16:05:18.477 回答