Cela a été demandé à quelques reprises, cependant, il semble y avoir aucune bonne réponse sur le web. Pour éviter les réponses ou les liens qui ne répondent pas à cette question, je vais le reformuler. Une page a seulement un formulaire avec le texte d'entrée (et le bouton). Nous publions du texte sur le serveur et nous voulons juste le renvoyer et l'alerter. En d'autres termes, la vue doit avoir la ligne:AJAX peut-il être utilisé avec Sinatra?
$.post(...,$("form").serialize(),function(reply){alert(reply);});
Avec PhP, la réponse est un « écho » one-liner. Cela peut-il être fait dans Sinatra? Je comprends que les frameworks backend sont construits autour de la manipulation de la manipulation DOM eux-mêmes. Je pose cette question parce que ce serait bien d'utiliser un langage plus expressif comme Ruby aussi juste pour la logique db interface/backend.
Modifier: C'est le /views/index.erb
(avec "/ réponse" à la place de "reply.php" - autrement index.html/index.php) partie:
<script src="jquery"></script>
<form action="reply.php" method="post"><input type="text" name="t"></form>
<script>
$(document).ready(function(){
$("form").submit(function(event){
event.preventDefault();
$.post("reply.php",$("form").serialize(),function(reply){alert(reply);});
});
});
</script>
Notez que avec nous event.preventDefault()
rester à /
route et ne vont pas dans /reply.php
, qui supprimerait le formulaire et n'imprimerait que le texte soumis. En d'autres termes, c'est ce qui permet à l'Ajax et nous obtenons une réponse (seulement en alerte) du serveur avec reply.php
:
echo $_POST["t"];
Avec Sinatra, nous devons avoir un contrôleur routes.rb
:
require 'sinatra'
get '/' do
erb :index
end
post '/reply' do
...
end
Question: Avec index.html/reply.php
nous recevons une alerte avec le texte posté. Comment index.erb
/routes.rb
peut-il être modifié également pour obtenir une alerte avec le texte posté?
Oui, cela peut être fait dans Sinatra. Cependant, vous semblez vouloir de l'aide spécifique avec quelque chose sur le front end. Il n'y a pas assez de détails ici pour deviner ce dont vous avez réellement besoin. Je vote pour fermer. –
@ Mark Thomas J'ai édité ma question de oui/non à comment. – observer
C'est une meilleure question maintenant. Voter pour rouvrir. –