在PHP文件中包含多个函数,并通过javascript文件中的jquery.post或jquery.get调用它们

Pal*_*Pal 1 javascript php ajax jquery

我想从我的javascript文件中调用PHP中的各种函数.通常使用Jquery.post我们调用PHP文件并传递各种值作为post.

 function new_user(auth_type, tr_id, user_name, email)
    {
    $.post("bookmark.php",{AuthType:auth_type, TR_Id:tr_id, UserName:user_name, UserEmail:email});
    }
Run Code Online (Sandbox Code Playgroud)

如果我想在PHP文件中创建多个函数并通过jquery/ajax调用它们,我该怎么做?

dar*_*rcy 6

我认为每个人都给出了正确的答案,但他们并不是最好的甚至是最好的例子.

让我们为你的初始代码添加一些东西.就像每个人都说过的那样,你需要在服务器端编写一些PHP来处理jQuery传递的内容,但是现在每个人都给出了这种方法的漂亮"静态"版本.

一个好的例子JS:

function new_user(auth_type, tr_id, user_name, email){
    $.post("bookmark.php",{Function:doSomething, AuthType:auth_type, TR_Id:tr_id, UserName:user_name, UserEmail:email});
}
Run Code Online (Sandbox Code Playgroud)

你可以看到我为函数添加了一个变量来调用" Function:doSomething ".doSomething()将是服务器端执行的功能.

这是动态调用函数的好方法,但是您的变量仍然与函数var一起使用.这意味着你最终必须编写代码来单独获取每个代码,以便将它们传递到该函数(服务器端).不是很优雅..所以我们会写一个更好的例子......

新的,更令人敬畏的JS:

function new_user(auth_type, tr_id, user_name, email){
    $.post("bookmark.php", {Function: doSomething, Data: [{ Authtype, TR_ID:tr_id, UserName:user_name, Email:email}] });
}
Run Code Online (Sandbox Code Playgroud)

在这个新示例中,您可以看到我已将辅助变量/数据包装在Data变量中.这种方式更容易将多个参数传递给PHP文件/函数.

现在:邪恶,可怕,可扩展 bookmark.php:

<?php
if(isset($_POST['Function'])){
    call_user_func($_POST['Function'], $_POST['Data']);
}

doSomething($data=array()){
    print_r($data);
}
?>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您需要在bookmark.php文件中添加的是检查以确保已传递Function变量,然后使用PHP call_user_func()将为您调用函数并传入变量Data(这是值数组)你发送你的$.post()).

您会注意到我只为doSomething()期望数组的函数设置了一个参数.这意味着您可以将任何参数发送到该功能.

任何函数都可以这种方式调用,你会发现将所有参数包装到一个数组中有助于保持一切动态和可伸缩性.

如果您对此代码有任何疑问,请随时提出.