Django / Ajax获取“数据”从触发页面而不是目标视图返回html

时间:2016-08-10 20:13:52

标签: jquery ajax django

我正在使用以下简单的AJAX调用。

$.ajax({
    url: $('#currentNodes').attr('target'),
    type: 'get',
    dataType: "html",
    success: function(data) {
        console.log(data);
    },
    failure: function(data) { 
        alert('error');
    }
}); 

应该从以下元素中获取目标:

<p><a href="{% url "current_nodes" view.slug %}" id="currentNodes">Test</a></p>

当我点击上述元素时,我的浏览器会显示我在 views.py 中设置的HTML:

def current_nodes(request, slug):
    html = "<html><body>Smoke Test for {}</body></html>".format(slug)
    return HttpResponse(html)

在我的 urls.py

中定义的网址
url(r'^(?P<slug>[a-zA-Z0-9-]+)/current_nodes/$', current_nodes, name="current_nodes"),

但根据console.log,来自此链接的Ajax调用会收到来自为当前页面提供服务的视图的响应,而不是我在目标中请求的响应。果然,如果我尝试用它做任何事情,它会显示我所在的模板的完整html,而不是插入我正在尝试处理的html。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

#currentNodesa元素。它没有target属性;它有一个href

url: $('#currentNodes').attr('href'),

答案 1 :(得分:1)

未定义属性target。试试这个:

$.ajax({
    url: $('#currentNodes').attr('href'),
    type: 'get',
    dataType: "html",
    success: function(data) {
        console.log(data);
    },
    failure: function(data) { 
        alert('error');
    }
});