当前位置: 首页 > 面试题库 >

如何在特定页面上显示Ajax微调器?

罗伟志
2023-03-14
问题内容

我在显示我的Ajax微调器时遇到问题。现在,我正在localhost:3000/test使用以下代码对其进行测试:

我单击一个链接以显示加载器(Ruby on Rails代码):

<li><%= link_to "New Test", new_test_path, :remote => true %></li>

我有div加载程序应该出现在里面:

<div id="generate-add-form">
  <div class="ajax-loader"></div>
</div>

然后我的功能使其显示:

jQuery( function($) {

$('#generate-add-form').ajaxStart( function() {
    $(this).children('.ajax-loader').show();
});

$('#generate-add-form').ajaxStop( function() {
    $(this).children('.ajax-loader').hide();
});

});

最后是我的CSS(注释掉一些东西以查看是否需要):

.ajax-loader {
 display:    none;
 /*position:   fixed;*/
 z-index:    1000;
 /*top:        -13em;
 left:       6em;*/
 background:url('ajax-loader.gif') 50% 50% no-repeat;
}
body.loading {
 overflow: hidden;
}
body.loading .ajax-loader {
 display: block;
}

当我单击未显示的链接时,怎么会这样?

编辑:

<li><%= link_to "Test", new_test_path, :class => "add-link", :remote => true %></li>
<li><%= link_to "Study Guide", new_study_guide_path, :class => "add-link", :remote => true %></li>

$('#generate-add-form').children('.ajax-loader').hide();
  $('.add-link').click( function() {
    $('#generate-add-form').children('.ajax-loader').show();
});

我先隐藏微调器,然后在单击时再次显示它。切换到另一个链接之间如何?


问题答案:

好的,首先,您想隐藏一些东西并显示您的ajax加载器。首先,为链接指定一个ID或唯一的类,以便您可以定位它:

<%= link_to "New Test", new_test_path, :remote => true, :id => 'you_link_id' %>

然后添加一些JavaScript以处理对链接的点击:

$('#your_link_id').click(function(){
  $('#generate-add-form').children('.ajax-loader').show();
  $('#id_of_the_stuff_you_want_to_hide').hide();
});

在将响应new_test_path的控制器操作中,在末尾添加以下内容:

respond_to do |format|
  format.js
end

在这里,您正在使控制器操作响应您的javascript请求(这就是遥控器的功能)。您还可以添加format.html响应html请求。如果您还想将页面提供给禁用了javascript的用户(占所有用户的1-2%),则可能需要这样做。

然后,使用名称创建视图your_action.js.erb。注意js,而不是通常的html。在内部,您可以隐藏ajax微调器并显示所需的内容。您甚至可以渲染该页面中定义的局部。

$('#generate-add-form').children('.ajax-loader').hide();
$('#id_of_the_stuff_you_now_want_to_show').show();
$("#div_containing_your_partial").html('<%= escape_javascript(render 'name_of_your_partial') %>');

如果需要,请克隆我之前创建的该存储库,其中显示了如何执行此操作。

最后,当您开始工作时,您可能想要研究以更漂亮的方式显示和隐藏内容的方法。例如,尝试使用fadeIn代替show和fadeOut代替hide。

另外,最后一个细节。在jQuery中,函数不会被顺序调用。它们都同时被调用。因此,如果要使某些内容仅 某些内容消失 后才
显示,则必须使用回调。这是一个例子:

# without a callback, both actions take place at the same time
$("#id").hide();
$("#id2").show();

# with a callback, show will only be called after hide ends
$("#id").hide(function(){
  $("#id2").show();
});

编辑:要做您想做的事情,您必须删除:remote => true链接的一部分,并基本上对Rails已经为您自动完成的工作进行编程。使用以下链接指导自己:

  • http://www.alfajango.com/blog/rails-3-remote-links-and-forms/

  • http://www.alfajango.com/blog/rails-3-remote-links-and-forms-data-type-with-jquery/

但这一切都相当复杂,特别是对于Railsbeginner而言:/



 类似资料:
  • 问题内容: 我在站点的文档上有一些ajax调用,这些调用根据ajax状态显示或隐藏进度条 我想基本上在网站的其他部分覆盖这些方法,这些地方会进行许多快速的小型ajax调用,并且不需要弹出和弹出进度条。我试图将它们附加到其他$ .getJSON和$ .ajax调用中或将其插入。我已经尝试过将它们链接起来,但是显然那不好。 问题答案: 2018注意: 此答案已过时; 您可以随时对这个答案进行修改,以解

  • 本文向大家介绍如何在页面上显示Emoji表情?相关面试题,主要包含被问及如何在页面上显示Emoji表情?时的应答技巧和注意事项,需要的朋友参考一下 如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。简单的表达就是:服务端已经执行了GET,但文件未变化。 什么情况下会返回304状态码 客户端是怎么知

  • 问题内容: 如何强制广告显示在加载了ajax的页面上?您可能知道,因为异步请求中会跳过AdSense使用的代码。 我需要强制显示该广告。我也在Google帮助论坛上进行了搜索,但是没有运气。我只找到了这个,但是什么也没告诉我(已停产)。 注意:我也找到了这个主题,但是我不想刷新这些广告,只是为了展示它们!之前尝试过,不起作用 那可能吗?有一些解决方法吗? 问题答案: 抱歉,但我认为这种显示AdSe

  • 我在Tomcat 8.x web服务器上使用JAAS和基于表单的web身份验证。用户在尝试登录时被拒绝访问的原因有很多: 无效的用户名 密码无效 在数据库中没有帐户 数据库中的帐户未激活 数据库中的帐户没有必需的角色 等…… 在我的LoginModule中,我检查所有这些条件以及更多条件,如果不允许用户访问web应用程序,就会抛出LoginException。JAAS似乎捕捉到了抛出的LoginE

  • 我想在CardView上显示一个特定的月份,而不使用下一个和上一个箭头来导航日历。如果我想显示2010年2月,用户只能看到2010年2月。他们下个月或上个月不能去。 我遵循这个堆栈溢出答案来显示一个特定的月份,但它对我不起作用。它始终显示我的病例的当前日期和月份。我不确定是否可以禁用上一次导航。 我的XML: 我的片段类: 如果没有下一个导航,我如何只显示2月份?

  • 问题内容: 我正在处理AJAX POST时需要基本的微调器或处理动画。我正在使用JQuery和Python。我查看了文档,但无法确切知道将ajaxStart和ajaxStop函数放在何处。 这是我的js: 问题答案: http://api.jquery.com/jQuery.ajax/: 这是$ .ajax()提供的回调挂钩: 调用beforeSend回调;它接收jqXHR对象和设置映射作为参数。