[AJAX] Requête AJAX ne renvoie pas de résultat

Eléphant du PHP | 62 Messages

28 mai 2013, 15:42

Bonjour,

Je développe, un module sur prestashop.
J’essaye de recevoir des réponses, d’une fonction php qui ce trouve dans la même page, mais les réponses de ma fonction n’arrive qu’à la fin de l’exécution de celle ci, 30 secondes plus tard.

Code : Tout sélectionner

$this->_html .=  <button  class="classname" onclick="etape()" style="width:100%;">Recevoir réponse</button> <div style="text-align : center;color:#000;font-size:14px;font-family: Verdana,Arial,Bitstream Vera Sans,Helvetica,Sans-serif;" id="progress" name="progress">...</div> 

Code : Tout sélectionner

<script type="text/javascript"> function etape() { jQuery.ajax( { type: "POST", url: "index.php?controller=AdminModules&configure=gestion&token=3ab3516fa575fb081da341b6f667d5be&tab_module=quick_bulk_update&module_name=gestion", data: { EtapeNow: "1", async: true }, success: function(data, textStatus, jqXHR) { document.getElementById("progress").innerHTML ="-"+data+"-"; }, error: function(jqXHR, textStatus, errorThrown) { document.getElementById("progress").innerHTML = "error : "+errorThrown; } } ); } </script>';
Je pense que le problème vient du fait que l’url est composée comme ceci.
index.php?controller=AdminModules&configure=gestion&token=3ab3516fa575fb081da341b6f667d5be&tab_module=quick_bulk_update&module_name=gestion

ou peut être par ce que j’essaye de récupérer les résultat d’un foreach(
Comme ceci

Code : Tout sélectionner

foreach($this->liste as $elements ) {   echo $i.’<br>’ ; 
Meme avec ca ne fonctionne pas

Code : Tout sélectionner

foreach($this->liste as $elements )   { $toto = $elements ['name'];     echo '<script>';      echo 'document.getElementById("progress").innerHTML = "('.$toto.')";';     echo '</script>'; 


Pouvez vous m’adez SVP.
Merci d'avance

Mammouth du PHP | 619 Messages

28 mai 2013, 16:37

Bonjour,

tu peux deja voir pour encoder ton url avec encodeURI(); puis faire une alert(data); pour voir se que php te retourne

Eléphant du PHP | 62 Messages

28 mai 2013, 16:54

Merci pour votre aide.

Voila ce que j’ai fait, mais aucun changement, le résultat arrive a la fin seulement.
[javascript]function etape()
{
var EtapeNow = "1";
var vuri = encodeURI("index.php?controller=AdminModules&configure=gestion&token=3ab3516fa575fb081da341b6f667d5be&tab_module=quick_bulk_update&module_name=gestion?EtapeNow="+EtapeNow);
jQuery.ajax(
{
type: "GET",
url: vuri,[/javascript]

Y a-t-il une autre façon de faire, que celle-ci jQuery.ajax(?

Mammouth du PHP | 619 Messages

28 mai 2013, 17:04

et comme ceci

[javascript]
<script type="text/javascript">
function etape()
{
url=encodeURI("index.php?controller=AdminModules&configure=gestion&token=3ab3516fa575fb081da341b6f667d5be&tab_module=quick_bulk_update&module_name=gestion");
jQuery.ajax(
{
type: "POST",

url: url,
data: {
EtapeNow: "1",
async: true
},
success: function(data, textStatus, jqXHR) {
alert(data);
// document.getElementById("progress").innerHTML ="-"+data+"-";
},
error: function(jqXHR, textStatus, errorThrown) {
//document.getElementById("progress").innerHTML = "error : "+errorThrown;
}
}
);
}
</script>';
[/javascript]

et que veux tu dire par "le résultat arrive a la fin seulement" a la fin de l'action

Eléphant du PHP | 62 Messages

28 mai 2013, 17:13

Voila le résultat de l’alert en image car je ne peux pas faire un copie coller
message1.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Mammouth du PHP | 619 Messages

28 mai 2013, 17:21

Ok parfait donc maintenant tu arrives bien sur ton fichier ?
regarde a la fin il a une erreur règle la puis vire alert() et dé commente les lignes

en gros le résultat de alert() va venir remplier l'id progress