首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Django视图中访问jQuery.ajax() get参数

如何在Django视图中访问jQuery.ajax() get参数
EN

Stack Overflow用户
提问于 2012-04-27 22:23:27
回答 1查看 2.8K关注 0票数 2

我最近开始学习jQuery,现在我正在使用.ajax()函数。

我不知道如何访问Django中的get参数。

我的代码看起来像这样:

Jquery & html:

代码语言:javascript
运行
复制
<div id="browser">
    <ul>

    {% comment %}
        Theres a script for each ctg. Each script fades out #astream, fades in #stream_loading and then it should display #astream with new values based on the GET param in ajax call
        Prolly it wont work, but first I need to interact with the GET param in my views.py
    {% endcomment %}

    {% for ctg in ctgs %}
        <script type="text/javascript" charset="utf-8">
            (function($) {
                $(document).ready(function() {
                    $("#stream_loading").hide()

                    $("#browse_{{ctg}}").click(function() {

                        $("#astream").fadeOut()
                        $("#stream_loading").fadeIn()

                        $.ajax({
                            type: "GET",
                            url: "/{{defo}}/?param={{ctg}}",
                            success: function() {
                                $("#stream_loading").fadeOut()

                                $("#astream").fadeIn()
                            }
                        });
                    });
                });
            })(jQuery);
        </script>
        <li><a id="browse_{{ctg}}" title="{{ctg}}">{{ctg}}</a></li>
    {% endfor %}
    </ul>
</div>
<div id="astream">
    {{ajaxGet}} #just to see whats rendered
    {% include "astream.html" %}
</div>

<div id="stream_loading">
    loading stream, please wait ...
</div>

Django:

代码语言:javascript
运行
复制
@https_off
def index(request, template='index.html'):

    request.session.set_test_cookie()

    path=request.META.get('PATH_INFO')
    defo=path[1:path[1:].find('/')+1]
    request.session['defo']=defo
    defo=request.session['defo']

    # build the stream sorted by -pub_date
    import itertools

    chained=itertools.chain(
        model1.objects.order_by('-pub_date').filter(),
        model2.objects.order_by('-pub_date').filter(),
    )

    stream=sorted(chained, key=lambda x: x.pub_date, reverse=True)

    ajaxGet=request.GET.get('param','dummy')

    if request.is_ajax():
        template='astream.html'
        ajaxGet=request.GET.get('param',False)

    renderParams={'defo':defo, 'stream':stream, 'ajaxGet':ajaxGet}

    return render_to_response(template, renderParams, context_instance=RequestContext(request))

然后我试着在我的模板中显示它

代码语言:javascript
运行
复制
{{ ajaxGet }}

但每次都会呈现为“dummy”

在firebug中,我可以看到get请求具有正确的键和值。

我在这里错过了什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 23:38:27

在使用这种Ajax时,人们经常会遇到一个问题,那就是不会阻止链接/按钮的默认操作。因此,您的Ajax函数永远不会触发,并且您在Django代码中看到的请求是由正常的页面加载引起的-这就是is_ajax()为false的原因。

click处理程序提供一个参数event,并在函数结束时调用event.preventDefault();

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10352434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档