2009-11-24 6 views
0

J'ai besoin d'aide avec ceci s'il vous plaît Je ne peux pas avoir une poignée sur elle.appeler une classe avec ajax

Le problème est que je veux appeler une méthode de classe, dans ce cas avec des méthodes statiques avec un appel ajax.

J'ai placé la classe auxiliaire dans le même dossier que le script appelé par ajax pour faciliter le référencement et essayer de l'inclure. Se pourrait-il que ma décision soit erronée?

Si je fais un testclass dans le fichier appelé par ajax, je peux obtenir une réponse.

class test { 
    public function testit() { 
     return "testit"; 
    } 
} 
$t=new test; 
$check= $t->testit(); 



switch($action) { 
case "someaction": 
    $data = array(); 
    $file='input_helper.php'; 
    include_once $file; 

    $check= input_helper::ip_address(); 
    header('Content-type: application/json'); 

    $output = array(
     "check" => $check, 
     "user" => $data 
     ); 

    echo json_encode($output); 

    exit(0); // Stop script. 

    break; 
//... 

EDIT POUR PLUS D'CLARIFICATION

L'action est définie comme une variable de poste dans la fonction ajax Les points url ajax à un script qui prend des mesures en fonction des variables affichées

merci, Richard

+0

Comment définissez-vous '$ action'? Comment la requête spécifie-t-elle la méthode à appeler? Est-ce qu'il nomme la classe et la méthode? À partir de l'exemple, il semble que la requête donne une chaîne nommant l'action à effectuer, et le script est responsable de la sélection de la classe et de la méthode. Est-ce correct? – outis

+0

C'est correct, j'ai essayé d'exécuter l'appel ajax a jeté la structure mvc en spécifiant l'URL complète ... domaine/contrôleur/méthode, MAIS je n'ai récupéré que du HTML dans la réponse et pas ma variable. L'effet secondaire est que je contourne les fonctions de chargement automatique, d'où mon problème initial. Je peux à nouveau les configurer dans ce script. Et utiliser ce script comme un gestionnaire pour les demandes ajax. Si quelqu'un a un commentaire comment je pourrais exécuter les demandes ajax selon le paradigme mvc normal, ce serait utile. – Richard

Répondre

1
<?php 
    include_once 'your/class/path/helper_class.php'; 
    . 
    . 

en haut de votre page PHP devrait le faire. ça n'a vraiment rien à voir avec AJAX. Si votre fichier PHP est en fait frappé sur le rappel, alors cela devrait fonctionner correctement.

En option, pour tester que votre chemin est correct, si vous le faites:

<?php 
    require 'your/class/path/helper_class.php'; 
    . 
    . 

Si le chemin est incorrect PHP lancer une erreur de niveau E_ERROR fatale.

+0

ou peut-être: include_once 'votre/class/path/input_helper.php'; C'est plus concret, et include_once n'est pas une fonction. – Don

+0

merci, j'ai finalement nettoyé toute la classe et seulement mis le testit() dedans et ça marche. Quelque chose dans la classe a dû le provoquer. Juste pour plus de clarté, spl_register ne fonctionne plus. Je suppose que si j'appelle le script sans la méthode de contrôleur/fonction www.domain. Ou devrais-je donner cette url à l'appel ajax, de sorte qu'il instancie automatiquement les objets à nouveau? – Richard

+0

en d'autres termes, créer un contrôleur ajax avec des méthodes et faire un $ .ajax ({ url: "www.domain/ajaxcontroller/testit", – Richard

Questions connexes