2017-01-18 6 views
0

Je fais deux appels AJAX dans le formulaire. La première consiste à changer la seconde sélection en fonction de la première sélection qui appelle une page PHP pour traiter les données. La seconde consiste à empêcher la publication par défaut et à publier les données dans une autre page PHP.utiliser Ajax pour appeler la fonction tout en utilisant un autre ajax avec preventDefault pour soumettre

Les deux fonctions fonctionnent si je supprime l'autre. J'ai aussi un autre problème qui est la redirection vers une nouvelle page (en utilisant CleanURL). Où dois-je rediriger sur la page de publication, ou une fois de retour sur la page du formulaire?

$('#brand').change(function() { 
 
    var brandID2 = $(this).val(); 
 
    $.ajax({ 
 
    url: "Calling the models after selecting the brand", 
 
    method: "POST", 
 
    data: { 
 
     brandID: brandID2 
 
    }, 
 
    dataType: "text", 
 
    success: function(data) { 
 
     $('#model').html(data); 
 
    } 
 
    }); 
 
}); 
 

 
$("#testform").on('submit', (function(e) { 
 
    e.preventDefault(); 
 
    $.ajax({ 
 
    url: "Calling the post page", 
 
    type: "POST", 
 
    data: new FormData(this), 
 
    contentType: false, 
 
    cache: false, 
 
    processData: false, 
 
    success: function(data) { 
 
     //window.location.href = "<?php echo $_SESSION['toRedirectToAfterFilters']; ?>"; 
 
    } 
 
    }); 
 
}));
<form name="testform" action="" method="POST"> 
 
    <select name="brand" id="brand"> 
 
    <option value=''>Select a Brand</option> 
 
    //function to load all the brands 
 
    </select> 
 
    <select name="model" id="model"> 
 
    <option value="">Please Select Brand First</option> 
 
    </select> 
 
    <button type="submit" name="submit" class="">FILTER</button> 
 
</form>

+1

"Les deux fonctions fonctionnent si je supprime l'autre." Que voulez-vous dire par le "Autre" –

+0

je veux dire si je supprime le premier le second fonctionne, et si je supprime le second le premier fonctionne – Da3kariS

Répondre

0

Il vous manque l'id sur testform

<form id="testform">...

Je supprimerais la dépendance CleanURL et essayer chaque demande AJAX un à la fois. Ensuite, vous verrez immédiatement le point d'échec. Si ce n'est pas le cas, lancez un debugger; dans chaque gestionnaire d'événement et passez en revue.

Personnellement, je voudrais rediriger à partir du serveur après une écriture de base de données réussie, pour simplifier la logique et ne pas avoir à stocker l'URL de rappel de succès dans le tableau $_SESSION.

+0

j'ai essayé d'ajouter l'id = "testform" mais il reste ne fonctionne pas. les fonctions fonctionnent bien si je n'utilise qu'un seul d'entre eux, mais les deux ne fonctionnent pas ensemble. Je pense que le problème en conflit ou dans le défaut par défaut. pour l'URL propre, je suis encore en train d'apprendre et j'envoie la requête à l'index.php en utilisant htaccess, donc la meilleure chose est de rediriger depuis la page qui affiche l'information. 'RewriteRule^(. *) $ Index.php? Url = $ 1 [QSA, L]' dans htaccess – Da3kariS