简单地说,我有这个带有超链接的变量:
$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>