Problème Ajax->fonction/méthode php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Ajax->fonction/méthode php

Re: Problème Ajax->fonction/méthode php

par Nephilim » 08 déc. 2013, 15:28

C'est bon problème résolu :) Le problème venait de l'url, c'est assez spécial avec le framework, il faut mettre dans mon cas l'url suivante:

Code : Tout sélectionner

url : "index.php/ajax/setKW"
En faite je faisais un petit moteur de recherche d'images. Je récupère bien les images en retour dans ma page php mais le problème est que avec mon echo le code n'est pas généré, je ne comprends pas...

Code : Tout sélectionner

<?php if (isset($arrayOccu)){ foreach ($arrayOccu as $key => $value) { $i = $key; $j = $value; $base = base_url().'images/'; $src = $base.$i; echo '<img alt="'.$i.'" class="randImg" src="'.$src.'">'; } } ?>

Je rappelle qu'avec xdebug je peux bien voir que j'ai récupéré les noms d'images correctement. Le problème vient vraiment de la génération du code.

Le controlleur qui envoie mes données est la classe ajax qui a cette méthode:

Code : Tout sélectionner

public function setKW() { $words = $_GET['words']; $arrayOccu = $this->Connection_model->getOccu($words); asort($arrayOccu); $data['arrayOccu'] = $arrayOccu; $this->load->view('welcome_message', $data); }

Re: Problème Ajax->fonction/méthode php

par franckm » 08 déc. 2013, 11:57

Alors commences simplement comme ça côté javascript:
[javascript]
function kwProcess(){
jQuery.ajax({
type: "GET",
url: "ajax.php?words=dzdz",
dataType: 'text',
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
beforeSend: function(xhr) {
xhr.overrideMimeType('text/html; charset=UTF-8');
},
success: function(data,textStatus){
alert(data);
},
error: function (xhr, ajaxOptions, thrownError){
jAlert("Erreur de traitement Ajax");
}
});
}
[/javascript]

et ton fichier ajax.php
echo $_GET['words'];
Normalement, quand tu cliques sur le lien qui lance ta fonction kwProcess() (tu as bien quelque chose dans ta page qui lance cette fonction kwProcess() au moins ???????) alors il doit t'afficher une box avec dedans 'dzdz'

Si il ne t'affiche rien, c'est que ton problème vient d'ailleurs. Je fais des scripts AJAX presque tous les jours, et ce que je t'ai donné marche à coup sûr.

Ps: je ne comprends pas bien pourquoi dans ta fonction javascript tu as commenté la partie success. Parce que si tu commentes la partie retour AJAX, forcément il ne va pas faire grand chose...

Re: Problème Ajax->fonction/méthode php

par Nephilim » 07 déc. 2013, 16:58

Bonjour Franckm, merci pour ton aide :)

Le ajax.php/getKW c'est ce que j'ai vu sur le net pour appeler la méthode d'une classe avec CodeIgniter (ici getKW de la classe ajax). J'ai donc essayé ce que tu m'as dit mais ça ne change rien :(
En visualisant le code source suite à la requête Ajax, je n'ai pas le texte passé avec le GET. Même en écrivant en dur la variable ça ne change rien :(

Re: Problème Ajax->fonction/méthode php

par franckm » 07 déc. 2013, 14:36

Pourquoi dans l'url ajax :
ajax.php/getKW

C'est quoi le /getKW ??????

Dans ton PHP commences ton fichier simplement par:
 echo '-->'.$_GET['words'];
De cette façon tu vois directement si tu reçois quelque chose.

Sinon dans ton AJAX, tu peux simplement faire:
[javascript]
url : "ajax.php?words=ererzerzer",
[/javascript]

Re: Problème Ajax->fonction/méthode php

par Nephilim » 07 déc. 2013, 00:06

(Le dzdz c'était juste pour tester avec un string sinon j'ai words qui est le fameux tableau de string...)

Problème Ajax->fonction/méthode php

par Nephilim » 07 déc. 2013, 00:03

Bonsoir tout le monde, je suis bloqué depuis quelques jours sur un problème qui reste pour moi incompréhensible (Je précise que je débute PHP).

En faite je souhaiterais juste envoyer une variable javascript à une fonction ou méthode php. J'utilisais au début le framework CodeIgniter.

Suite à quelques analyses avec xDebug et Firebug, on peut voir que le GET est bien émis dans ma classe php mais je me suis vite rendu compte qu'avec des break point, le code prend fin au moment ou l'on arrive à la signature de la classe (class nomclasse extends ci_controller par exemple)...

J'ai donc essayé sans framework et là j'ai exactement le même problème... Peut être que cela vient des classes que Ajax n’apprécie pas ? J'ai alors essayé avec une fonction simple... Et là toujours rien :shock: .

Allons tester avec une petite condition avant la fonction:

Code : Tout sélectionner

$words = $_GET['words']; if(!empty($words)) echo "<script type='text/javascript'>alert('AJAX OK');</script>"; function getKW() { echo "<script type='text/javascript'>alert('dadadadada');</script>"; $words = filter_input("INPUT_GET", 'words'); $arrayOccu = $this->Connection_model->getOccu($words); asort($arrayOccu); $data['arrayOccu'] = $arrayOccu; $this->load->view('welcome_message', $data); }
Et là surprise lors du debug, je réceptionne bien ma variable 'words' qui n'est pas vide (c'est un tableau) mais il saute tout de même mon echo :shock: . J'essaie au cas ou avec if(!empty($words[0])), toujours rien..., is_null au lieu de empty, encore rien... Je ne comprends vraiment plus rien à ce qui se passe dans mon code...

Je précise que je travaille sous NetBeans 7.4 (projet GIT) avec le serveur WAMP 2.4.

Est-ce que quelqu'un peut me dire ce qui se passe ? Merci beaucoup !


PS: Voici mon envoie Ajax:

Code : Tout sélectionner

function kwProcess(){ var sentence = $('#kwString').val(); var words = sentence.split(" "); $.ajax({ type: "GET", url : "ajax.php/getKW", data: { words : 'dzdz' } // success:function(msg){ // alert("completed"); // } }); }