. header('Location:)在php中使用onclick函数来执行url


header('Location: ) in php switch to execute url with onclick function

简单地说,我有这个带有超链接的变量:

$test3 = '<a href="#" onclick="archiveMove('''.$mulmov.'''); return false;">Move to Quotes</a>';

,我需要的是在一个switch case中执行这个变量,如下所示:

switch ($_POST['dropdown'])  { 
    case "Select Folder":
    echo "Please select";
    break;
    case "One":
    exec($test3); <-- //here i want to run (if this is not execute, my misunderstanding) the link.

    break;
    case "Two":
    header('Location: http://www.facebook.com/'); <-- //this is just a test
    break;

default:
  echo "<br></br>";
  echo "Move multiple files:";
  echo "<br></br>";
  }

  ?>
  <form method="post" name="theform" action="">
    <select name="dropdown">
    <option value="Move to Folder">Select</option>
    <option value="One">One</option>
    <option value="Two">Two</option>
    </select>
    <input type="submit" value="Move"/>
</form>

我想知道如何在用户不单击ahref链接的情况下执行ahref链接,但只需将此链接设置为案例,当用户提交表单时,所选的案例操作超链接。

感谢任何帮助。


更详细

我知道javascript和php都是独立的语言,更好的选择是使用Ajax,但我对Ajax的理解有限。

为了更好地解释它,下面是它的全部内容:

1)我有一个邮箱,里面有一些消息。

2)您可以检查这些消息,然后单击"Trash Selected"链接删除所选消息。这是链接:

<a href="#" onclick="deleteInbox('''.$muldel.'''); return false;">Trash Selected</a>

javascript函数对所有选中的消息执行$muldel中的php函数,并更新数据库。

function inboxDelete(url) {
    document.messages.action = url;
    document.messages.submit();
}

archiveve ()和是完全一样的,只是临时复制了一下,使事情更清楚。

3)我现在重用了ahref代码来执行相同的过程,但这一次是将选定的消息移动到文件夹中。

4)这些文件夹可以从下拉框中选择-这就是表单的来源。

5)所以虽然我可以通过添加这样的链接来让它工作:

 $test3 = '<a href="#" onclick="archiveMove('''.$mulmov.'''); return false;">Move to Quotes</a>';
echo $test3;

6)我现在需要这个工作相同的方式,但链接被改变,这取决于哪个文件夹被选中。

我的问题就到此为止了,我希望我说得更清楚些。

我知道你可以使用GET或POST将变量发送到javascript中,然后完全通过javascript执行该函数。我尝试了下面的方法,但是没有效果:

<form method=post name="myform" action="<?php echo $PHP_SELF;?>">
    <input type="hidden" name="formVar" value="">
    <input type="text" value="Enter Text Here" name="myText">
    <input type="text" value="Enter Text Here" name="myText2">
    <input type="submit" value="Send form!" onClick="readmove()">
</form>

 <?php
    // Retrieve the hidden form variable (using PHP).
    $myvar = $_POST['formVar'];
    if ($myvar == "$mulmov"){
        echo $mulmov; 
    }
    ?>
        <script language="JavaScript">
    <!--
    function setText(){
      document.myform.myText.value = document.myform.myText.value.toUpperCase();
    }

     function readmove(){
        document.myform.myText.value = "<?php echo $myvar; ?>" ; 
        readmove2();
    }

    function readmove2(){
        if (document.myform.myText.value == "$mulmov"){
            document.myform.myText2.value = "<?php echo $mulmov; ?>" ; 
            <?php exec ('archiveMove('''.$mulmov.''');  return false;'); ?>
    } else if (document.myform.myText.value == "$mulmov2"){
            document.myform.myText2.value = "<?php echo $mulmov2; ?>" ; 
    }
    }
</script>

首先,您不能像这样在PHP中执行JavaScript。此时,控件已经移动到服务器,JavaScript在客户端运行。

其次,我假设你不想只是跟随链接,你想运行链接的onClick事件,因为href只是一个标签。所以你正在尝试用PHP运行一个JavaScript函数。你不能用一种语言从另一种语言的函数调用一个函数。

很难说你到底想做什么,但是如果你想在用户选择某个下拉菜单时运行一个函数,写一个php函数来做archiveve()的工作。如果希望在不刷新页面的情况下完成此操作,可以停止提交进程,并使用javaScript和Ajax调用archiveve()函数。

如果你能详细说明你到底想做什么,也许我们能帮上更多的忙。

好的,所以你的工作代码和不工作代码之间的唯一区别是,你想要根据下拉菜单中选择的内容来指定提交的URL ?

所以当下拉菜单被选中时,你可以使用JavaScript来设置表单动作。

但是,每次都以相同的动作提交表单,然后使用PHP来决定要做什么,可能是一个更好的主意。看来这就是你最初要去的地方。只需在switch语句中获取文件夹id,然后调用一个函数进行编辑:

PHP可以类似于你的方式:

  switch ($_POST['dropdown'])  { 
    case "Two":
       // set folder id
       $folder_id = 2;
    break;
  }
  moveMessages($_POST['Messages'], $folder_id);

函数,将消息移动到需要的位置。

    function moveMessages($messages, $folder_id){
        // depending on your form setup
        foreach($data as $id => $value ){
          if($value){
            // code to move to folder
          }
        }
        return true;
    }

如果有其他因素,请告诉我。

您可以编写JavaScript代码,在点击处理程序中使用window.location.href请求url。

window.location.href="http://example.com";

好的,这就是我的解决方案,但也感谢你的解决方案,Jeff Ryan,这也奏效了。

<script language="javascript">

 function buttons(str) 
{
document.getElementById("txtHint").innerHTML = str; 
if (document.f1.users.options[1].selected){
    document.getElementById("txtHint").innerHTML ="<?php echo $mulmov; ?>";
    document.messages.action = document.getElementById("txtHint").innerHTML;

}
else if (document.f1.users.options[2].selected){
    document.getElementById("txtHint").innerHTML ="<?php echo $mulmov2; ?>";
    document.messages.action = document.getElementById("txtHint").innerHTML;

}
}
function submit_mes(str)
{
    document.messages.submit();
}
    </script>
    <form name="f1">
<select name="users" onChange="buttons(this.value)">
<option value="">Select a folder:</option>
<option value="Quotes">Quotes</option>
<option value="Projects">Projects</option>
<input type="button" value="Move" onClick="submit_mes(this.value)">
</select>
</form>
<div id="txtHint"><b>Folder will be listed here.</b></div>