【问题标题】:Jquery Ajax Auto Refreshing <div>Jquery Ajax 自动刷新 <div>
【发布时间】:2013-09-01 16:29:19
【问题描述】:

因为我也在 SO 上看到过这个问题,所以这可能对许多人来说是重复的,但我还没有找到这个问题的答案。

我想从导航栏中选择一个项目,并通过用 AJAX 生成的数据替换当前数据来显示另一个标签内的内容。

目前我能够将数据发布到 python 服务中,它对其进行处理并最终将其返回给客户端。将数据更改为div 的最后一部分没有发生。

这是我的代码。

python 服务

def dashboard(request):

    if request.is_ajax():
        which_nav_bar = request.POST['which_nav_bar']
        print which_nav_bar // prints which_nav_bar inside the terminal

    ctx = {'result' : "hellloooo"}
    return render_to_response('dashboard/dashboard1.html',ctx, context_instance = RequestContext(request))

JS 文件

$(function (){
    $("#nav_bar li").click(function(){
        alert($(this).text());     // works fine
        $.ajax({
            type: "POST", //able to post the data behind the scenes
            url: "/dashboard/",
            data : { 'which_nav_bar' : $(this).text() },
            success: function(result){
                 $(".container-fluid").html(result);
            }

        });
    });
});

HTML

<div class="navbar">
              <div class="navbar-inner">
                  <ul class="nav" id="nav_bar">
                    <li class="active"><a href="#">Home</a></li>
                    <li><a href="#">Device</a></li>
                    <li><a href="#">Content</a></li>
                    <li><a href="#">About</a></li>
                    <li><a href="#">Help</li>
                </ul>
              </div>
        </div>  

<div class="container-fluid"></div>

输出

$(".container-fluid").html(result); this 是我实际得到的。相反,我希望我的 python 代码应该返回一些东西(在本例中为 ctx)并打印 ctx 变量。

【问题讨论】:

    标签: html ajax django jquery


    【解决方案1】:

    更改它的 ID

    <div id="container-fluid"></div>
    

    这是 id 选择器$("#container-fluid")

    id-selector

    如果你想按类访问,你可以使用

    $(".container-fluid")

    class-selector

    【讨论】:

    • 没有。这是正确的。我实际上是在浏览导航栏,所以在从导航栏中选择一个项目时,它应该在&lt;div id="container-fluid"&gt;&lt;/div&gt; 中填充结果,这就是为什么 id-selector 是$("#nav_bar li")
    • @user1162512 我在您的 js 代码中没有看到选择器为 $("#nav_bar li")
    • @user1162512 使用$("#container-fluid").html(result);
    • 谢谢图沙尔。我实际上在.# 上犯了一个错误。感谢你的关心。但是&lt;div id="container-fluid"&gt;&lt;/div&gt; 中显示的数据是完整的 HTML 代码。我希望它是“Helloooo”。这是什么鬼?
    • 试试 $("#container-fluid").html(result);
    【解决方案2】:

    改变

    $("#container-fluid").text(result);
    

    $(".container-fluid").text(result);
    

    #用于id访问,.用于class访问

    【讨论】:

    • div 标签内显示的数据是完整的 HTML 代码。我希望它是“Helloooo”。这是什么鬼?
    • 试试 $("#container-fluid").html(result);
    • 没有。它将 HTML 代码呈现为 HTML。我想我没有在我的 python 代码中发送正确的数据“Helllooo”。你能检查一下它是否正确?
    【解决方案3】:

    试试

    $("#nav_bar li").click(function(){
            var text_input = $(this).text();     // works fine
            $.ajax({
                type: "POST", //able to post the data behind the scenes
                url: "/dashboard/",
                data : { 'which_nav_bar' : text_input  }
                success: function(result){
                    $("#container-fluid").text(result);
                }
    
            });
        });
    

    在您使用的代码中

    data : { 'which_nav_bar' : $(this).text()},
    

    但在您的 ajax 请求中,$(this).text() 将是未定义的,

    所以将它分配给一个变量并在data{}中使用它

    并删除末尾的逗号

    【讨论】:

    • 没有工作。 2 件事。首先,成功函数中的选择器应以. 开头,其次在我的ajax 请求中定义$(this).text()。我想我无法将数据从我的 python 代码正确地发送回客户端。
    猜你喜欢
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2010-10-05
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多