Page 1 sur 1

Return array en Ajax

Posté : 16 oct. 2014, 17:35
par Kraim88
Salut,

J'ai une fonction qui fait un appel Ajax Jquery.

[javascript]function selectTable(table){
table = $("#listTable").val();

$.ajax({
url: "_module/ExportFichier/exportFile/ajax/requestColumns.php",
type: "POST",
data: "table=" + table,
dataType: 'json'
});
}[/javascript]
requestColumns.php
header("content-type: application/json; charset=utf-8");

$tableName = $_POST["table"];

$objService = new ExportFileService($tableName);
$columns = $objService->get_columns();

echo json_encode($columns);
$columns contient un tableaux de donnée.

Je suis nouveau en ajax. Je n'ai pas compris comment renvoyer mon tableau à ma fonction Js, puis comment par la suite accéder à ce tableau dans mon code php principale.

Merci d'avance pour votre aide.

Re: Return array en Ajax

Posté : 17 oct. 2014, 08:37
par Aureusms
Bonjour,

Essayes de développer sous firefox avec le module firebug : il t'indiqueras les erreurs de ton code.
Pour ton code, essaye que data doit être sous forme d'objet :
[javascript]
data : {table : table}[/javascript]
et ajoute var a ta définition de variable :
[javascript]var table = $("#listTable").val();[/javascript]


[javascript]function selectTable(table){
var table = $("#listTable").val();

$.ajax({
url: "_module/ExportFichier/exportFile/ajax/requestColumns.php",
type: "POST",
data : {table : table},
dataType: 'json'
});
}[/javascript]

Sinon je crois que c'est bon.

Re: Return array en Ajax

Posté : 17 oct. 2014, 09:27
par Kraim88
Ok merci.

Mais maintenant comment je peut utiliser ce tableau pour l'afficher sur ma page php qui contient ma liste. J'ai du mal à comprendre le concept
<div class="row">
    <div class="span12">
        <select id="listTable" name="listTable">
            <option value="toto">Toto</option>
            <option value="titi">Titi</option>
         </select>
    </div>
</div>

<div class="row">
    <div class="span12">
         <button class="btn btn-primary" onClick="selectTable()">Select</button>
    </div>
</div>
<script type="text/javascript" src="_module/ExportFichier/exportFile/ajax/requestExport.js"></script>

Re: Return array en Ajax

Posté : 17 oct. 2014, 10:31
par Aureusms
Après tu l'affiches directement à partir de l'Ajax.

[javascript]function selectTable(table){
var table = $("#listTable").val();

$.ajax({
url: "_module/ExportFichier/exportFile/ajax/requestColumns.php",
type: "POST",
data : {table : table},
cache : false,
complete : function (xhr, result) {
dureeSession = dureeSessionDefault;
if (result != "success") {
$('.span12').prepend('<p>Si tu vois ce message, il y a eu un problème dans la réponse du serveur</p>');
return;
}
var reponse = xhr.responseText;
$(reponse).prependTo('.span12');
$('.span12').prepend('<p>Voilà tes données sont injectées...</p>');
}
});
}[/javascript]

Re: Return array en Ajax

Posté : 23 oct. 2014, 09:24
par Kraim88
Merci pour tes réponses.
Elle m'ont permis de m'onrienté sur la bonne voie. Voici mon code:

[javascript] $.ajax({

url: "_module/ExportFichier/exportFile/ajax/requestAllColumns.php",
type: "POST",
data: "table="+ table,
dataType: 'json',

success: function(data){
console.log('The Ajax request WORKS!');

$('#columns').css('display','block');
$('#columns-check').empty();

for (var key in data) {
if (data.hasOwnProperty(key)) {
var id = Math.random();
$('#columns-check').prepend('<div style="display: inline-block; margin: 20px 20px 20px 0;"><input type="checkbox" id="'+id+'" class="field" value="'+data[key]+'" style="display: inline-block; margin:0 5px -1px 0;"><label for="'+id+'" class="field" style="display: inline-block;">'+data[key]+'</label></div>');
}
}
},

error: function(){
console.log('The Ajax request did not works!');
}
});[/javascript]