【问题标题】:Loading Content Via Ajax通过 Ajax 加载内容
【发布时间】:2013-05-17 03:55:31
【问题描述】:

好的,所以我对 ajax 和从外部加载内容还很陌生,如果对我的问题有任何见解,我将不胜感激。

我目前有一个隐藏的 div,它是空的,在单击链接后应该加载 ajax 内容。

<div id="#ajax-wrap"></div>

我目前有一个链接列表,它们都具有相同的类,我希望在单击时,空白 div 会进行滑动切换,然后从链接所在的页面加载内容。

链接:

<a href="always a different url" class="home-right"></a>

当前的 jQuery:

$("a.home-right").click(function () {
$('#ajax-wrap').slideToggle();
});

由于我是 Ajax 新手并加载外部内容,我想知道如何从 #content 标记中的链接页面加载内容。所以本质上,我想要一个.home-right 链接,#ajax-wrap 会滑动切换,然后 Ajax 会从链接页面中提取内容(这总是一个不同的随机链接),它是#content div,放置#ajax-wrap 中的内容。

提前感谢大家的帮助!

【问题讨论】:

    标签: ajax jquery


    【解决方案1】:

    您想为链接设置ajax。要求:

    1. 为链接编写处理程序。
    2. 当有人点击链接(重定向到页面)时,我们必须取消浏览器的默认行为。
    3. 删除从服务器收到的旧数据 ajax 并使 #ajax-wrap 新鲜。
    4. 通过ajax加载远程页面并将其设置为#ajax-wrap
    5. 现在向下滑动。

    // Document Ready
    $(function () {
    
        // attaching click handler to links
        $("a.home-right").click(function (e) {
            // cancel the default behaviour
            e.preventDefault();
    
            // get the address of the link
            var href = $(this).attr('href');
    
            // getting the desired element for working with it later
            var $wrap = $('#ajax-wrap');
    
            $wrap
                // removing old data
                .html('')
    
                // slide it up
                .slideUp()
    
                // load the remote page
                .load(href + ' #content', function () {
                    // now slide it down
                    $wrap.slideDown();
                });
        });
    
    });
    

    【讨论】:

    • 你摇滚!这正是我所需要的。非常感谢。
    • 内容显示后是否有办法设置关闭按钮?例如,如果我想让元素#close-button 能够关闭已向下滑动的内容,我将如何将其合并到这段代码中?
    【解决方案2】:

    您可以像这样简单地使用ajax

    $("a.home-right").click(function () {
      $.ajax({
        type: "get",
        url: "YOUR URL HERE",
        success: function(data){
               $('#ajax-wrap').html(data);
              $('#ajax-wrap').slideToggle();
        },
        error: function(){
          alert("An error occured");
        }
      });
    });
    

    【讨论】:

    • 您没有将 HTML 设置为 #ajax-wrap
    • 对不起,您将 HTML 设置为 #ajax-wrap 是什么意思?
    • 他的意思是将 ajax 响应中的 #content 放入 #ajax-wrap
    • #content 是放在#ajax-wrap 里面吗?例如&lt;div id="#ajax-wrap"&gt; &lt;div id="content"&gt;&lt;/div&gt; &lt;/div&gt;
    【解决方案3】:

    试试这个:

    $(function(){
        $("a.home-right").click(function () {
              $('#ajax-wrap').slideUp();                                  
               var url = $(this).attr("href")                                 
              $.ajax({
                type: "get",
                url: url,
                success: function(msg){
                    $('#ajax-wrap').html(msg)        
                    $('#ajax-wrap').slideDown();
                },
                error: function(){
                  alert("An error occured");
                }
          });
        })
    
    })
    

    【讨论】:

      【解决方案4】:

      使用get:

      // Inside click handler
      $.get('url_that_returns_data')
        .done(function(response){
          var $response = $(response);
          $('#ajax-wrap').html($response.find('#content')).slideToggle();
        });
      

      【讨论】:

      • 我想你的意思是$('#ajax-wrap').load('the_url_that_returns_data #content').slideToggle()
      • 啊好吧,我没看懂这个问题。
      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多