如何在javascript和PHP mysql中修复表单动作到不同的页面问题


how to fix form action to different page issue in javascript and php mysql,

我想检查用户的浏览器类型,点击表单提交按钮,根据浏览器类型对不同的页面进行操作,但是当我使用PHP while循环时,<form xxxxxxx onSubmit="javascript function()">无法运行,只是用两个浏览器去link/a.php。如果我删除while循环,它可以成功运行,如Chrome浏览器转a.php和IE浏览器转b.php。如何解决这个问题?代码如下。第一步是从Quirksmode

中导入检查浏览器类型的javascript代码。

那么这是一个while循环版本。

<script>
   function redirect(){
      if(BrowserDetect.browser == 'Chrome'){
         document.getElementById("albumlist").setAttribute("action", "link/a.php");
      }
      if(BrowserDetect.browser == 'Explorer'){
         document.getElementById("albumlist").setAttribute("action", "link/b.php");
      }
   }
</script>

<body></body> .

<?php
$result = mysql_query("SELECT * FROM album GROUP BY folderName ORDER BY id desc");
while($data = mysql_fetch_array($result)){
   $folderName = $data['folderName'];
   ...
   ...
?>
   <form name="albumlist" id="albumlist" method="post" action="link/a.php" target="_blank" onSubmit="redirect();">
      <input type="hidden" name="folderName" id="folderName" value="<?php echo $folderName; ?>" />
      <input type="submit" id="submitfolderlist" name="submitfolderlist" value="Submit" />
   </form>
<?php
}
?>

然后一个没有while循环的版本只是删除所有关于<?php while loop code ?>

将JS更改为:

<script>
   function redirect(form){
      if(BrowserDetect.browser == 'Chrome'){
         form.setAttribute("action", "link/a.php");
      }
      if(BrowserDetect.browser == 'Explorer'){
         form.setAttribute("action", "link/b.php");
      }
   }
</script>

然后把PHP改成:

   <form name="albumlist" method="post" action="link/a.php" target="_blank" onSubmit="redirect(this);">
      <input type="hidden" name="folderName" id="folderName" value="<?php echo $folderName; ?>" />
      <input type="submit" name="submitfolderlist" value="Submit" />
   </form>

这将消除表单和提交按钮上的重复id。

我将使用PHP....检测当前页面上的浏览器并相应地更改动作链接。这样你就完全不需要javascript了。

像这样在你的页面顶部......

$ua = $_SERVER["HTTP_USER_AGENT"];
/* ==== Detect the UA ==== */
$chrome = strpos($ua, 'Chrome') ? true : false; 
// Internet Exlporer
$msie = strpos($ua, 'MSIE') ? true : false; 
// All Internet Explorer
if($chrome){ $link = "link/a.php";}
elseif($msie){$link = "link/b.php";}

然后在表单中回显操作的$link变量…

<form name="albumlist" id="albumlist" method="post" action="<?echo $link;?>" target=_blank> 

PS完全未经测试…