我有以下代码,我尝试在页面之间动态传递参数
<script type="text/javascript">
function buildAndSubmitForm(index){
<? $args = 't='.$team.'&s='.$season.'&l='.$league.'&f='.$flag;
$inputs = '';
foreach($games as $game)
$inputs .= '<input type="checkbox" name="games[]" id="games[]" value="'.$game.'" checked="checked" />';
?>
var form = '<?='<form name="myForm" id="myForm" action="scr'?>';
form = form.concat(index);
form = form.concat('<?='.php?'.$args.'" method="post">'.$inputs.'</form>'?>');
$('#formDiv').html(form);
$('#myForm'.concat(index)).submit();
}
</script>
<div style="display: inline">
<div name="formDiv" id="formDiv" style="display: none;"></div>
<a href="#" onclick="buildAndSubmitForm('a')">Home Stats</a>
<a href="#" onclick="buildAndSubmitForm('b')">Visit Stats</a>
<a href="#" onclick="buildAndSubmitForm('c')">Wins VS Losses</a>
<a href="#" onclick="buildAndSubmitForm('d')">Home VS Visit</a>
<a href="#" onclick="buildAndSubmitForm('e')">Overall</a>
</div>
问题在于,当我以一定的速度点击(点击链接,然后提交时(如半秒钟 - 后一秒)我点击另一个链接),我的表单被提交为第二个链接我点击了。 为什么会这样?
编辑: 尝试执行以下操作:
<div style="display: inline">
<a href="<?php echo "scra.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Home Stats</a>
<a href="<?php echo "scrb.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Visit Stats</a>
<a href="<?php echo "scrc.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Wins VS Losses</a>
<a href="<?php echo "scrd.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Home VS Visit</a>
<a href="<?php echo "scre.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Overall</a>
</div>
EDIT2: 这些解决方案都没有奏效。
答案 0 :(得分:0)
为什么使用Javascript连接通过PHP生成的文本?为什么不简单地做:
<?php
$form = <<<EOL
<form name="myForm" id="myForm" action="scr.php?{$args}" method="post">{$inputs}</form>
EOL;
?>
<script ....>
var form = <?php echo json_encode($form) ?>;
$('#formDiv').html(form);
etc...
同样,如果PHP中$args
或$inputs
个变量中的任何内容包含引号(单引号或双引号),则很可能会生成无效的HTML,这会破坏您的<form>
代码
答案 1 :(得分:0)
为什么不使用查询字符串(GET参数而不是POST)?
如果是因为复选框(已选中的游戏),您可以简单地使用不同的查询字符串传递em(&amp; games = baseball&amp; games = football ...)。你的变量将是一个数组。
这样你甚至不需要表格。
答案 2 :(得分:0)
如果您想要阻止双击,则需要在点击后禁用该链接。这是一个先前的SO问题,提供了一个禁用链接的jQuery解决方案: