Включить несколько функций в файл PHP и вызывать их через jquery.post или jquery.get в файле javascript - PullRequest
1 голос
/ 22 июня 2010

Я хочу вызывать различные функции, сделанные на PHP, из моего файла javascript. Обычно, используя 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 ]

6 голосов
/ 23 июня 2010

Я думаю, что все дали правильные ответы здесь, но они не самые хорошие или даже самые редкие примеры.

Давайте немного оживим ваш исходный код. Как уже говорили все, вам нужно написать немного 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 голос
/ 22 июня 2010

отправьте в своем сообщении переменную, обозначающую, какую функцию вы хотите вызвать в вашем php-файле, затем добавьте оператор switch в начало вашего php-файла и посмотрите на назначенную переменную, скажем, $ _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';
}

?>
0 голосов
/ 22 июня 2010

Отправить дополнительный параметр в вашем посте Jquery, который определяет, какую функцию вы хотите вызвать в вашем PHP-файле.Один из возможных примеров (самый простой в реализации):

Для функции 1

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

Примечание: выполните жесткую проверку на вашей стороне, чтобы убедиться, что кто-то не «возился» с вашим URL / сообщениемпеременные.

0 голосов
/ 22 июня 2010

Вы можете добавить другие параметры к вызову ajax. Я бы добавил параметры для 'function' (строка) и 'arguments' (массив), чтобы скрипт php с другой стороны знал, что делать с передаваемыми данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...