Это было задано несколько раз, однако, похоже, в Интернете нет хорошего ответа. Чтобы избежать ответов или ссылок, которые не отвечают на этот вопрос, я буду перефразировать его. Страница имеет только форму с текстом ввода (и кнопкой). Мы отправляем текст на сервер и хотим, чтобы он просто был отправлен обратно и был предупрежден. Другими словами, вид должен иметь строку:Может ли AJAX использоваться с Sinatra?
$.post(...,$("form").serialize(),function(reply){alert(reply);});
С PhP, ответ «эхо» один вкладыш. Можно ли это сделать в Sinatra - я понимаю, что базовые структуры построены вокруг обработки манипуляций с DOM. Я задаю этот вопрос, потому что было бы неплохо использовать более выразительный язык, такой как Ruby, также для интерфейса db interface/backend.
Edit: Это /views/index.erb
(с "/ ответ" вместо "reply.php" - в противном случае index.html/index.php) часть:
<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>
Обратите внимание, что с event.preventDefault()
мы оставайтесь на /
маршрута и не заходите в /reply.php
, , который удалил бы форму и распечатал только текст. Другими словами, это , что позволяет Ajax и мы получим ответ (только в боевой готовности) с сервера с reply.php
:
echo $_POST["t"];
С Синатра, мы должны иметь routes.rb
контроллер:
require 'sinatra'
get '/' do
erb :index
end
post '/reply' do
...
end
Вопрос: С index.html/reply.php
мы получаем предупреждение с опубликованным текстом. Как можно index.erb
/routes.rb
изменить, чтобы получить предупреждение с опубликованным текстом?
Да, это можно сделать в Синатре. Однако вам кажется, что вам нужна конкретная помощь с чем-то на лицевой стороне. Здесь недостаточно подробных сведений о том, что вам нужно. Я голосую, чтобы закрыть. –
@Mark Thomas Я отредактировал свой вопрос с да/нет, как. – observer
Это лучший вопрос сейчас. Голосование для повторного открытия. –