将搜索结果加载到divjQuery和rails中
在我的rails应用程序中,我有一个搜索栏,用户可以在其中搜索其他用户。当前,当用户从提交搜索时,他们将被重定向到“结果”页面。我想在同一页的div中加载这些结果。。我可以通过我的网站导航链接做到这一点,但我对jQuery和rails还很陌生,无法理解这一点 我的jQuery对应于我的导航链接:将搜索结果加载到divjQuery和rails中,jquery,ruby-on-rails,ajax,forms,load,Jquery,Ruby On Rails,Ajax,Forms,Load,在我的rails应用程序中,我有一个搜索栏,用户可以在其中搜索其他用户。当前,当用户从提交搜索时,他们将被重定向到“结果”页面。我想在同一页的div中加载这些结果。。我可以通过我的网站导航链接做到这一点,但我对jQuery和rails还很陌生,无法理解这一点 我的jQuery对应于我的导航链接: $(function() { $('#links a').live('click', function() { $('#pages').load(this.href).fadeI
$(function() {
$('#links a').live('click', function() {
$('#pages').load(this.href).fadeIn('slow');
return false;
});
});
我尝试对搜索功能执行相同的操作
$(function() {
$("input#search").parents("form").submit(function() {
$('#pages').slideUp('slow').load(this.href).slideDown('slow');
return false;
});
});
任何帮助都将不胜感激~同时为新手提供一些有用的jQuery教程
我的表格:
<div id="search_bar">
<form action="/search" method="get">
<input class="tb10" id="search" name="search" onclick="this.select();" type="text" value="Find Users" />
</form>
</div>
尝试返回false搜索功能中的代码>。返回false将取消在元素上触发的默认事件。在第一个示例中,您将事件绑定到一个锚点,该锚点具有一个href元素,读取该元素可以知道从何处获取链接
在第二种情况下,看起来您已经复制并粘贴了适用于链接的内容。您需要知道表单的处理位置(表单的操作),以及作为表单数据传递给它的内容。这在jquery中是这样做的:(我假设#search是搜索表单的id)
我对RoR不是很熟悉,但jquery应该是可靠的:)
希望有帮助 目前我无法给出RoR示例,但我认为答案都是关于JQuery的
基本上,我看到这是通过一个ajax请求来完成的,以获得搜索结果,并通过一个模板系统(如jquery模板或Mustach)来显示结果
这种方法将使您更容易生成html,而不是试图将网页压缩到div中
JQuery模板:
Rails小胡子:我刚刚做了一个测试,尝试发出警报(“test”),好像jQuery没有找到我的表单ID?在我的rails应用程序中,我使用:id=>“search”指定form_标记。。我的表单(实际上只是一个文本字段)没有提交按钮。。。要使用。提交我需要一个吗?如果#search
识别了
标记,那么submit()
将不起作用,您需要绑定到click()
submit()
仅适用于
标记据我所知,sbeam是正确的。如果要提交搜索表单,可以更改表单ID,或使用$(“input#search”).parents(“表单”).submit();谢谢你,扎克,我得到了回应警报的代码(“你好,世界”);。所以我知道Jquery正在找到正确的元素,但是页面仍然没有加载到div中。。。实际上,文本字段不再响应,我只看到动画。我已经更新了这篇文章,以反映我现在的情况。谢谢你的回复,是的,这是一篇复制粘贴的文章。我想rails会做所有的后台工作,我可以将rails吐出的html重定向到一个div中。嗯,好的,我来看看,谢谢,我想知道“模板”是什么
$(function(){
$("#search").submit(function(){
var queryString = $(this).serialize(); //gets the values in your form
var url = $(this).attr("action"); //your action url
$("#pages").load(url+"?"+queryString).fadeIn('slow');
return false; //this prevents your form from doing its default behavior.
});
});