Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ROR中加载AJAX后,如何使页面跳转到顶部?_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 4 - Fatal编程技术网

Javascript 在ROR中加载AJAX后,如何使页面跳转到顶部?

Javascript 在ROR中加载AJAX后,如何使页面跳转到顶部?,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 4,我知道下面的js应该将浏览器跳转到页面顶部 $('html').scrollTop(0); 但是我应该把这些代码放在哪里,以便在ajax加载之后激活它呢 我有一个show.js.erb文件,其中包含异步加载的js,但是简单地将js放在其中是不起作用的,我想这是因为它将与加载同时发生 $("#tag_posts").html("<%= escape_javascript(render @atag) %>"); $(“#tag_posts”).html(“”); 那么,我该怎么做呢

我知道下面的js应该将浏览器跳转到页面顶部

$('html').scrollTop(0);
但是我应该把这些代码放在哪里,以便在ajax加载之后激活它呢

我有一个
show.js.erb
文件,其中包含异步加载的js,但是简单地将js放在其中是不起作用的,我想这是因为它将与加载同时发生

$("#tag_posts").html("<%= escape_javascript(render @atag) %>");
$(“#tag_posts”).html(“”);
那么,我该怎么做呢

谢谢

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <meta charset="utf-8">
        <meta name="generator" content="Bootply" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <!--[if lt IE 9]>
            <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    <!-- Google Fonts -->
    <link href='http://fonts.googleapis.com/css?family=Bree+Serif' rel='stylesheet' type='text/css'>
    </head>
    <body>
<div class="wrapper">
    <div class="box">
      <div class="column col-sm-12 col-xs-12" id="main">

            <!-- main right col -->
            <div class="column col-sm-9 col-xs-11" id="main">

                <div class="padding">
                    <div class="full col-sm-9">

                        <!-- content -->                      
                        <div class="row">

                         <!-- main col left --> 
                         <div class="col-sm-12">

                              <!-- Render Tag Posts Asynchronously to Populate Stream -->
                              <div id="tag_posts"></div>

                              <!-- Render Posts Partial to Populate Stream -->
                              <%= render "posts/index" %>

如果您希望对文档中的所有AJAX调用执行它,您需要以下内容:

$(document).on("ajax:success", "form[data-remote]", function(e, data, status, xhr) {
  $('html').scrollTop(0);
});
在上面的示例中,当一个名为
dataremote
的数据属性的表单元素发送一个AJAX调用,并且调用成功时,将执行该函数。在上阅读有关
的更多信息

另一个例子来自但这次使用了
ajaxSuccess

$(document).ajaxSuccess(function() {
  $( ".log" ).text( "Triggered ajaxSuccess handler." );
});
文档中的另一个示例,但这次将回调直接附加到函数:

var jqxhr = $.ajax( "example.php" )
.done(function() {
  alert( "success" );
})
.fail(function() {
  alert( "error" );
})
.always(function() {
  alert( "complete" );
});
$( document ).ajaxComplete(function( event, xhr, settings ) {
    if ( settings.url === "<%= escape_javascript(render @atag) %>" ) {
        $('html').scrollTop(0);
    }
});

当然,每次Ajax调用都需要这样做,但如果这样做,您可以使用。每次Ajax调用完成时,它都会被触发

$( document ).ajaxComplete(function() {
    $('html').scrollTop(0);
});
如果不希望每次调用都触发它,可以向函数添加一个条件:

var jqxhr = $.ajax( "example.php" )
.done(function() {
  alert( "success" );
})
.fail(function() {
  alert( "error" );
})
.always(function() {
  alert( "complete" );
});
$( document ).ajaxComplete(function( event, xhr, settings ) {
    if ( settings.url === "<%= escape_javascript(render @atag) %>" ) {
        $('html').scrollTop(0);
    }
});
$(文档).ajaxComplete(函数(事件、xhr、设置){
如果(settings.url==“”){
$('html').scrollTop(0);
}
});

如果需要更多有用的示例,请查看链接。

我也遇到了同样的问题。我尝试了上面提到的所有方法。没有人能解决这个问题。
问题是我在返回ajax响应的文件中包含了一些标记。我从那里删除了样式,现在它不会跳转。

你能显示构建Ajax请求对象的代码吗?为Breviti添加、截断/编辑了代码。我想看看构建Ajax对象的JAVASCRIPT。或者,如果您使用的是jQuery,我希望看到$.ajax()语句。这行js就是它。剩下的是ruby如果没有表单呢?这是从火车上装载的db@Laser见文件。选择器(
form[data remote]
在本例中)是可选的!这意味着要么你就离开它@顺便说一句,从DB加载AJAX是什么意思?我认为问题可能是jquery在jquery函数中不起作用。为了测试js是否工作,$(document).ajaxSuccess(function(){$(“.log”).text(“触发的ajaxSuccess处理程序”);};不将任何内容记录到控制台,但是jquery$(document.ajaxSuccess(function(){console.log(“触发的ajaxSuccess处理程序”);}中的标准js;很好。有什么想法吗?为什么像
$(“.log”)
这样的东西会起作用?为什么不干脆
console.log
?我认为简单的“html”选择器可能不起作用,因为只有一部分页面会滚动,而我正试图滚动到页面顶部。您知道滚动到特定div顶部的语法吗?谢谢如果需要滚动到特定元素的顶部,只需使用其id。for-可以使用:$(“#myDiv”).scrollTop(0)