从单击的特定URL调用的php函数

时间:2011-12-22 21:14:36

标签: php jquery html

编辑:这是“更好”的。

第一页

<!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登陆页面

<?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!';
    }

?>

它正在实现我想要的方式,但是有更好的方法来获得我想要的东西吗?

谢谢!

3 个答案:

答案 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"元素设置为namevalue,则当且仅当单击该按钮时,才会设置该名称和值。未单击的按钮将不会发送其名称。所以你可以看到哪一个存在,所以告诉按下了哪个按钮:

<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来执行此操作。

相关问题