monphp
Messages postés2Date d'inscriptionjeudi 1 septembre 2011StatutMembreDernière intervention 4 août 2013
-
4 août 2013 à 16:56
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
5 août 2013 à 12:58
Bonjour tous le monde,
Il y a un bout de temps que j'essaye de d'introduire ajax dans mon projet.
Mon problème est le suivant:
j'ai deux select une va être remplit d'après le résultat de l'autre on change (fournisseur -> produits).
Le code que j'ai réalisé est comme suit:
function SelectProduit(){
var id_select = $('#selectfournisseur').val();
$.ajax({
url: "{{ path('remplir_select_produit')}}",
type: 'POST',
data: {'id': id_select},
dataType: 'json',
success: function(json){ // quand la réponse de la requete arrive
$('#selectproduit').html(''); // tu vides le select2
$.each(json, function(index, value) { // et tu boucle sur la réponse contenu dans la variable passé à la function du success "json"
alert("aaa");
$('#selectproduit').append('<option value="'+ value.idDeLoption +'">'+ value.libDeLoption +'</option>');
});
}
});
}
Controller
public function SelectProduitAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getEntityManager();
if($request->isXmlHttpRequest()) // pour vérifier la présence d'une requete Ajax
{
$id = '';
$id = $request->get('id');
if ($id != '')
{
$repository=$em->getRepository('GestionLibrairieBundle:Fournisseur');
$t=$repository->find($id);
$produits=$t->getProduits();
$tabproduits = array();
$i = 0;
foreach($produits as $produit) // pour transformer la réponse à ta requete en tableau qui replira le select2
{
$tabproduits[$i]['idDeLoption'] = $produit->getCodeBar();
$tabproduits[$i]['libDeLoption'] = $produit->getLibele();
$i++;
}
$response = new Response();
$data = json_encode($tabproduits); // c'est pour formater la réponse de la requete en format que jquery va comprendre
$response->headers->set('Content-Type', 'application/json');
$response->setContent($data);
return $response;
}
}
return new Response('Erreur');
}