【发布时间】:2014-11-15 16:57:34
【问题描述】:
这已经被问过几次了,但是,网上似乎没有很好的答案。为避免不回答此问题的回复或链接,我将重新措辞。一个页面只有一个带有输入文本(和按钮)的表单。我们将文本发布到服务器,并希望它只是发回并发出警报。换句话说,视图应该有一行:
$.post(...,$("form").serialize(),function(reply){alert(reply);});
对于 PhP,答案是“回声”单行。这可以在 Sinatra 中完成吗?我知道后端框架是围绕自己处理 DOM 操作而构建的。我之所以问这个问题,是因为最好将 Ruby 等更具表现力的语言也用于数据库接口/后端逻辑。
编辑:这是/views/index.erb(用“/reply”代替“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"];
对于 Sinatra,我们需要一个 routes.rb 控制器:
require 'sinatra'
get '/' do
erb :index
end
post '/reply' do
...
end
问题:使用index.html/reply.php,我们会收到带有已发布文本的警报。如何修改index.erb/routes.rb 以获得发布文本的警报?
【问题讨论】:
-
是的,这可以在 Sinatra 中完成。但是,您似乎需要前端的某些特定帮助。这里没有足够的细节来判断你真正需要什么。我投票结束。
-
@Mark Thomas 我将我的问题从是/否编辑为如何。
-
这是一个更好的问题。投票重新开放。