2010-11-21 10 views
0

J'ai une page de recherche: (s'il vous plaît excuser la mauvaise syntaxe, juste à des fins de démonstration)Proposer une solution AJAX pour former la soumission sans la page rechargeant, avec action = « » au lieu d'action = « response.php »

<form action="" method="post" name="form"> 
//form elements and such with a hidden input name="action" value="search" 
</form> 
<?php if(isset($_POST['action']) and $_POST['action'] == 'search'): ?> 
<?php include results.php ?> //takes form data, build SQL query, puts results in array 
<?php foreach($results as result) blah blah //for each result display it ?> 
<?php endforeach; ?> 
<?php endif; ?> 

J'ai vu des solutions où l'attribut action est défini sur un fichier php. Malheureusement dans mon exemple il n'en a pas. Prenez celui-ci: http://www.simonerodriguez.com/ajax-form-submit-example/

<form name="MyForm" action="response_ajax.php" method="post" onsubmit="xmlhttpPost('response_ajax.php, 'MyForm', 'MyResult', '<img src=\'pleasewait.gif\'>'); return false;"> 

Il a l'air bien, mais malheureusement je n'ai pas le premier paramètre requis: reqsponse_ajax.php, le mien est juste vide.

La JS se trouve ici: http://www.simonerodriguez.com/wp-content/plugins/downloads-manager/upload/ajaxsbmt.js

Si quelqu'un peut apporter des modifications au script ou suggérer une meilleure solution, ce sera génial, merci.

Répondre

0

Il ne devrait pas importer du tout ce qui est dans l'attribut d'action lorsque vous utilisez AJAX. c'est l'attribut onclick du bouton onsubmit ou submit qui démarre le traitement AJAX.

vous comprenez les bases de AJAX, non? Au lieu de soumettre réellement le formulaire, qui chargerait une nouvelle page, vous envoyez une requête XMLHttpRequest au serveur, POSTing les données, et attendez une réponse avec onreadystatechange, à quel point vous mettez à jour dynamiquement votre page. il y a littéralement des centaines voire des milliers d'exemples sur le web.

+0

Y at-il une raison pour laquelle cela ne fonctionnera pas pour mon cas. J'ai testé toute la journée ... rien. – stockoverflow

+0

pour être honnête, j'ai des tonnes de travail à compléter moi-même. Je ne peux pas vraiment parcourir votre code. Insérez-vous des instructions d'alerte dans votre javascript et consignez-vous des instructions dans votre code côté serveur? analyser vos logs Apache? il doit y avoir des indices quelque part quant à la raison pour laquelle cela ne fonctionne pas si cela échoue. –

+0

vérifier ces deux liens de mon: http://www.delicious.com/jcomeau_ictx/ajax –