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

时间:2010-06-22 18:27:59

标签: php javascript jquery ajax

我想从我的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});
    }

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

4 个答案:

答案 0 :(得分: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});
}

你可以看到我为函数添加了一个变量来调用“ 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}] });
}

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

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

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

doSomething($data=array()){
    print_r($data);
}
?>

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

你会注意到我只为需要数组的函数doSomething()设置了一个参数。这意味着您可以将任何参数发送到该函数。

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

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

答案 1 :(得分:1)

在你的帖子中发送一个变量来指定你要在你的php文件中调用什么函数,然后在你的php文件的开头添加一个switch语句并查看一个指定的变量说$ _POST ['function'],set不同的条件让他们调用相应的函数

<?php

switch($_POST['function']){
    case '1': do_this(); break;
    case '2': do_that(); break;
    case '3': do_the_other(); break;
    default: break;
}

function do_this(){
    echo 'do this called';
}
function do_that(){
    echo 'do that called';
}
function do_the_other(){
    echo 'do the other called';
}

?>

答案 2 :(得分:0)

您可以将其他参数添加到ajax调用中。 我要做的是为'function'(字符串)和'arguments'(数组)添加参数,以便另一方的php脚本知道如何处理传递的数据。

答案 3 :(得分:0)

在Jquery帖子中发送一个额外的参数,用于定义要在PHP文件中调用的函数。一个可能的例子(最容易实现):

对于功能1

$.post("bookmark.php?f=1",{AuthType:auth_type, TR_Id:tr_id, UserName:user_name, UserEmail:email});

注意:做一些硬核检查,以确保有人没有“弄乱”您的网址/帖子变量。