<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
</head>
<body>
<form id="routeME" name="routeME" action="routeME.php" method="post">
<input id="key" name="key" type="hidden">
<input id="funcA" name="funcA" type="button" value="A">
<input id="funcB" name="funcB" type="button" value="B">
<input id="funcC" name="funcC" type="button" value="C">
</form>
<script type="text/javascript">
$('form#routeME :button').click(function() {
$('#key').val($(this).attr('id'));
$('form#routeME').submit();
});
</script>
</body>
</html>
<?php
$value = $_POST['key'];
if (isset($value)) call_user_func($value);
function funcA(){
echo 'function A NEW!';
}
function funcB(){
echo 'function B NEW!';
}
function funcC(){
echo 'function C NEW!';
}
?>
以下是第一篇帖子......
如果您有一个HTML表单并将其发布到.php页面,那么如何获取所点击的链接或类?我正在尝试在登录页面上运行.php函数,具体取决于在POSTing页面上的JQuery函数中单击了什么链接。这就是我现在正在做的事情。
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#funcA").click(function(){
$('form#routeME').attr({action: "routeME.php"});
$('#key').val('A');
$('form#routeME').submit();
});
$("#funcB").click(function(){
$('form#routeME').attr({action: "routeME.php"});
$('#key').val('B');
$('form#routeME').submit();
});
$("#funcC").click(function(){
$('form#routeME').attr({action: "routeME.php"});
$('#key').val('C');
$('form#routeME').submit();
});
});
</script>
</head>
<body>
<form id="routeME" name="routeME" action="routeME.php" method="post">
<input id="key" name="key" type="hidden">
<input id="funcA" name="funcA" type="button" value="A">
<input id="funcB" name="funcB" type="button" value="B">
<input id="funcC" name="funcC" type="button" value="C">
</form>
</body>
</html>
<?php
$value = $_POST['key'];
//echo $value;
if (($value=='A')) {
A();
} else if (($value=='B')) {
B();
}else if (($value=='C')) {
C();
}
function A(){
echo 'function A!';
}
function B(){
echo 'function B!';
}
function C(){
echo 'function C!';
}
?>
它正在实现我想要的方式,但是有更好的方法来获得我想要的东西吗?
谢谢!
答案 0 :(得分:4)
我相信你正在寻找call_user_func
功能
if (isset($value)) call_user_func($value);
call_user_func
使用$value
传递的名称调用该函数,因此如果您提交了“A”,则您的脚本将运行A()
函数。
编辑:如果您碰巧知道要调用的函数的“范围”,您可以进行我常用的检查。
if (isset($value))
{
$array = array('function_1', 'function_2', 'function_3');
if (in_array($value, $array))
{
/* The $value is expected, so try to run the function */
call_user_func($value);
}
else die("Invalid function passed!");
}
答案 1 :(得分:2)
您可以将JavaScript简化为一个功能:
$('form#routeME input[type="button"]').click(function() {
$('#key').val($(this).val());
$('form#routeME').submit();
});
然后你可以使用PHP端的命令模式来执行类似于你现在的功能,或者将它与DFranks的答案结合起来。
答案 2 :(得分:1)
这实际上非常容易,并且根本不涉及任何Javascript。
如果您的input type="submit"
元素设置为name
和value
,则当且仅当单击该按钮时,才会设置该名称和值。未单击的按钮将不会发送其名称。所以你可以看到哪一个存在,所以告诉按下了哪个按钮:
<input id="funcA" name="func" type="submit" value="A">
<input id="funcB" name="func" type="submit" value="B">
<input id="funcC" name="func" type="submit" value="C">
<!-- note that type="submit" on all these elements -->
现在您可以在PHP中轻松测试:
if ($_POST['func'] === 'A') {
A();
} elseif($_POST['func'] === 'B') {
B();
} elseif($_POST['func'] === 'C') {
C();
}
请注意,您根本不需要任何Javascript来执行此操作。