2014-05-02 3 views
0

j'ai une forme où les types d'utilisateur dans un terme de recherche:Flask et JQuery: Comment charger une autre page avec JQuery

<form class="navbar-form navbar-left" role="search"> 
    <div class="form-group"> 
     <input type="text" class="form-control" id="search-val" placeholder="Search"> 
    </div> 
    <button type="submit" class="btn btn-default" id="search-btn">Submit</button> 
</form> 

Je veux obtenir cette entrée d'utilisateur et appeler une page certaing. Par exemple /index?search_term=foo

J'ai essayé de le faire avec JQuery avec des choses comme:

$('#search-btn').on('click',function(){ 
    var search_term = $('#search-val').val(); 
    $.get("/?search_term="+search_term); 
}); 

Du côté Python, je tente d'accéder au paramètre comme ceci:

s = request.args.get('search_term', '') 

Mais ce n'est pas travail. La page s'actualise juste et Python ne reçoit pas le search_term. Je suis nouveau à Flask alors s'il vous plaît ours avec moi.

Répondre

1

Vous oubliez d'annuler l'action par défaut, ce qui est de soumettre la page:

$('#search-btn').on('click',function(){ 
    var search_term = $('#search-val').val(); 
    $.get("/?search_term="+search_term); 
    return false; 
}); 

Sans return false le navigateur présentera heureusement aussi la forme elle-même, qui dans ce cas signifie qu'il va utiliser GET sur la même URL que la page (il n'y a pas d'attribut action). Cela annule également toutes les demandes AJAX en attente.

Bien sûr, votre appel $.get() ne fait toujours rien du côté du navigateur, mais au moins en annulant l'action de formulaire par défaut, vous obtenez un effet côté serveur.

+0

De plus, ils devront corriger le '$ .get()' qui ne fait rien comme écrit. – jfriend00

+0

@ jfriend00: Je supposais que c'était un test de débogage; l'OP ne voit rien se passer du côté de Flask. –

Questions connexes