J'ai un fichier php func.php
où j'ai défini de nombreuses fonctions, disons:
<? php
function func1($data){
return $data+1;
}
?>
Je veux appeler le function func1
en utilisant ajax . Merci de votre aide
Vous ne pouvez pas appeler une fonction PHP directement à partir d'un appel AJAX, mais vous pouvez le faire:
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); }
});
Vous devriez appeler votre script php via une requête ajax, en utilisant jquery comme:
Javascript:
$.ajax({
url: "script.php",
data: { param1: "value1", param2: "value2" },
type: "GET",
context: document.body
}).done(function() {
// your code goes here
});
Vous pouvez donner vos paramètres via la propriété data de l’objet 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
Plus d'informations que vous pourriez obtenir à partir de la description de la fonction jQiery.ajax () dans http://api.jquery.com/jQuery.ajax/
C'est un peu plus compliqué, mais je vais essayer de le réduire à l'essentiel.
Vous aurez besoin d'une sorte d'interface (une convention, en gros) entre l'appelant et votre script. Deux sont les principales préoccupations ici:
La façon dont votre script comprend ce qui doit être appelé et avec quels arguments. Supposons que vous décidiez d'utiliser une requête GET
pour appeler une fonction. Le nom de la fonction peut être dans un champ func
et les arguments dans un args
, sous forme de chaîne séparée par ;
. En d'autres termes, appeler funcFoo(5,'bar')
se ferait en demandant func.php?func=func1&args=5;bar
.
La manière dont l'appelant reçoit (et comprend) la valeur de retour. Étant donné que vos exigences sont orientées js, une approche JSON serait hautement appropriée.
Ajoutez le code suivant avec vos fonctions:
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);
Cependant, vos fonctions doivent également être modifiées pour répondre aux nouvelles exigences. Puisqu'il n'y a aucun moyen de dire combien d'arguments l'appelant fournira, une fonction doit être conçue pour n'accepter aucun argument obligatoire et rechercher les arguments fournis eux-mêmes. En outre, il devrait toujours renvoyer un tableau afin d'être json_encode
d avant de le renvoyer à l'appelant.
Votre exemple de fonction, par exemple, devrait ressembler à ceci:
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!");
}
Soyez conscient cependant : Ceci est juste un squelette pour vous aider à démarrer avec le concept entier. Il faut faire beaucoup plus attention à la fois tolérance de pannes et sécurité. Mais c'est un autre sujet.
Oui, vous pouvez !
voici mon code:
$.ajax({
type: "POST",
url: "ajax.php",
data: { kode: $(this).val(), func: 'my_func' },
success: function(response) {
//any success method here
}
});
et voici le code en php pour recevoir quelle fonction appeler.
$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);
}
J'espère que ça vous aidera ...: D