【问题标题】:How to call PHP function using jQuery ajax?如何使用 jQuery ajax 调用 PHP 函数?
【发布时间】:2015-02-03 04:05:46
【问题描述】:

我有一个名为 myfunctions.php 的文件,其中有很多函数,比如

function sendForm(){
    //save form
}
function fn2(){
 //do something
}
 // Other functions ...

还有 jquery 代码,

$.ajax({
    url: "myfunctions.php",
    type: "POST",
    contentType: "application/x-www-form-urlencoded",
    data: {key1: "value1", key2: "value2", key3: "value3"},
    complete: function(){
        //completado
        alert("complete");
    }
});

我需要在这个文件中调用特定的函数;例如sendForm()。我该怎么做?

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    在 PHP 中

    <?php
    // create a list of approved function calls
    $approved_functions = array('sendForm','fn2');
    
    // check the $_GET['function'] and see if it matches an approved function
    if(in_array($_GET['function'], $approved_functions))
    {
        // call the approved function
        $_GET['function']();
    }
    
    function sendForm(){
        //save form
    }
    function fn2(){
     //do something
    }
    

    在 AJAX 中

    // specify which function to call
    url: "myfunctions.php?function=sendForm",
    

    【讨论】:

    • 但是我要为更多的 50 功能做这个... 其他建议?
    • 不,我不推荐其他方法。如果您愿意放弃 Web 应用程序的安全性和完整性,那么您可以跳过 $approved_functions 检查并执行 $_GET['function'] 内部的任何内容。只需致电$_GET['function']();,但要知道您将受到像url: "myfunctions.php?function=phpinfo",这样的不需要的函数注入的影响@
    【解决方案2】:
    $.ajax({
        //...
        data: {key1: "value1", key2: "value2", key3: "value3", type:0},
        //...
    });
    

    myfunctions.php:

    <?php
    //...
    if (!isset($_POST['type'])) { /* return something */ exit; }
    $type = $_POST['type'];
    if ($type == 0)
    {
        function1();
    } else if ($type == 1) {
        function2();
    } //etc.
    //...
    ?>
    

    【讨论】:

    • 就没有别的办法了吗?
    • @omixam 不,这是最安全、最标准的方式。
    猜你喜欢
    • 2011-05-08
    • 2011-01-17
    • 1970-01-01
    • 2011-11-10
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多