Подтвердить что ты не робот

Вызвать функцию php с аргументами с помощью JQuery

У меня есть php файл func.php, где я определил многие функции, скажем:

<? php 
function func1($data){
return $data+1;
}
?>

Я хочу вызвать function func1, используя ajax. спасибо за вашу помощь

4b9b3361

Ответ 1

Вы не можете вызвать функцию PHP непосредственно из вызова AJAX, но вы можете сделать это:

PHP:

<? php 
    function func1($data){
        return $data+1;
    }

    if (isset($_POST['callFunc1'])) {
        echo func1($_POST['callFunc1']);
    }
?>

JS:

$.ajax({
    url: 'myFunctions.php',
    type: 'post',
    data: { "callFunc1": "1"},
    success: function(response) { alert(response); }
});

Ответ 2

Вы должны вызвать свой php-скрипт через ajax-запрос, используя jQuery, например:

Javascript:

$.ajax({
  url: "script.php",
  data: { param1: "value1", param2: "value2" },
  type: "GET",
  context: document.body
}).done(function() {
  // your code goes here
});

Вы можете передать свои параметры через свойство data объекта ajax.

Php

// you can do isset check before 
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];

// validate // sanitize // save to db // blah blah // do something with params

Дополнительную информацию вы можете получить из описания функции jQuery.ajax() по адресу http://api.jquery.com/jQuery.ajax/

Ответ 3

Это немного сложнее, но я постараюсь свести его к основам.

Вам потребуется какой-то интерфейс (соглашение, в основном) между вызывающим и вашим script. Вот две основные проблемы:

  • Как ваш script понимает, что нужно вызывать и с какими аргументами. Скажем, вы решили использовать запрос GET для вызова функции. Имя функции может быть в поле func и аргументах в args one, в качестве строки, разделенной символом ;. Другими словами, вызов funcFoo(5,'bar') будет выполняться путем запроса func.php?func=func1&args=5;bar.

  • Способ, которым вызывающий абонент получает (и понимает) возвращаемое значение. Поскольку ваши требования js-ориентированы, подход JSON будет очень уместным.

Добавьте следующий код вместе с вашими функциями:

if(isset($_GET['func']))
  {
  $func=$_GET['func'];
  if(function_exists($func))
    {
    $args=(isset($_GET['args'])?explode(';',$_GET['args']):array());
    $result=call_user_func_array($func,$args);
    }
  else
    $result=array('error'=>"Unknown Function $func!");
  }
else
  $result=array('error'=>"No function name provided!");
echo json_encode($result);

Однако ваши функции также должны быть изменены в соответствии с новыми требованиями. Поскольку нет способа сообщить, сколько аргументов будет подано вызывающим, функция должна быть сконструирована так, чтобы не принимать никаких обязательных аргументов и проверять сами поставляемые. Кроме того, он должен всегда возвращать массив, чтобы быть json_encode d, прежде чем он будет возвращен вызывающему.

Например, ваша примерная функция должна выглядеть примерно так:

function func1(){
    $data=func_get_args();
    if(count($data)) // at least one -- rest will be ignored
      return $data[0]+1;
    else
      return array('error'=>__FUNCTION__."() expects an argument!");
}

Имейте в виду, хотя. Это всего лишь скелет, чтобы вы начали со всей концепции. Необходимо уделять больше внимания как отказоустойчивости, так и безопасности. Но это еще одна тема.

Ответ 4

Да, ты можешь !

вот мой код:

     $.ajax({
        type: "POST",
        url: "ajax.php",
        data: { kode: $(this).val(), func: 'my_func' },

        success: function(response) {
            //any success method here
        }
    });

а вот код в php чтобы получить какую функцию вызывать.

$post = (object) $_POST;
if(!$post)
    return false;

$func = $post->func;
return $func($post);

function my_func($post) {    

    $json['any_data'] = false;

    if($post->kode == 'ND'){               
        $json['any_data'] = 'ND-'.date('Y');
    }

    echo json_encode($json);

}

Надеюсь, это поможет вам, братан...: D