2013-02-27 5 views
3

J'ai une forme post, je veux que le submit à faire dans une façon AJAX mais je ne veux pas l'URL de la page pour changer.jQuery Mobile éviter changePage() sous forme de paiement ajax soumettre

Par exemple:

<form action="/countries/change_country" data-ajax="true" method="post"> 
    <select name="country_code"> 
    <option value="FR" selected="selected">France</option> 
    <option value="DE">Germany</option> 
    </select> 
    <input type="submit" value="change country" /> 
</form> 

Lorsque je clique sur le bouton change country le formulaire est envoyé par AJAX ce qui est agréable, mais l'URL de la page est modifiée pour /countries/change_country ce qui est pas bien parce que cette URL n'existe pas mon serveur qui est très picky avec les verbes HTTP.

Je sais qu'il est possible de changer ce comportement par défaut pour toute l'application mais je voudrais désactiver le changePage() uniquement pour ce formulaire.

+1

Vous souhaitez que l'utilisateur reste sur la même page après l'envoi du formulaire? – Omar

+0

Essayez ceci, je l'espère cela fonctionne '$ ("forme") sur ("soumettre", function() { $ ("form") attr ("action", "/ pays/change_country").. $ .mobile.changePage ("# YourPageID", {allowSamePageTransition: true});} ) '' sur le formulaire – Omar

+0

essayer 'data-ajax = "false" et faire la soumission via ajax avec le code –

Répondre

2

Soumettre le formulaire via Javascript/jQuery à la place.

Première: Désactiver par défaut submit-comportement

$('#form').on('submit', function (e) { 
    if (e.preventDefault) e.preventDefault(); 
    return false; 
}); 

Deuxième: sérialisation les données de formulaire avec jQuery

var serializedFormData = $('#form').serialize(); 

Troisième: post votre formulaire avec

$.ajax({ 
    url: '/countries/change_country', 
    type: 'POST', 
    data: serializedFormData 
}); 
+0

Je cherchais une solution "jQuery Mobile out-of-the-box", mais je vois que je dois utiliser mon propre mécanisme comme celui que vous proposez. – fguillen

+0

Je cherchais la même chose que vous, mais je n'ai pas trouvé de solutions "out-of-the-box". C'était le meilleur que j'ai trouvé. – Giorgio

Questions connexes