gpt4 book ai didi

javascript - Django Ajax - $.get 方法成功函数在没有调用任何服务器端 View 的情况下执行

转载 作者:行者123 更新时间:2023-12-03 06:16:31 24 4
gpt4 key购买 nike

删除了上一个问题以澄清一下。

我有一个 Django 支持的网站和一个带有动态填充表的模板。

模板:

<table id = 'my_table'>
<thead>
......
</thead>
<tbody>
</tbody>
</table>

Javascript

$(function () 
{
refresh_vendors_list_table();
});

function refresh_vednors_list_table()
{
$.get("/ajax_refresh_vendors_list_table/", function(response)
{
$('#my_table').find('tbody').html(response);
});
}

查看:

def ajax_refresh_vendors_list_table(request):
template = 'vendors/vendors_list_paginator.html'
vendors_qs = vendors_qs.filter(...)
context = {'vendors_qs':vendors_qs}
return render_to_response(template,
context,
context_instance=RequestContext(request))

表格模板 (vendors_list_paginator.html)

{% load el_pagination_tags %}

{% paginate vendors_qs %}

{% for vendor in vendors_qs %}
<tr>
......
</tr>
{% endfor %}
{% show_more_table %}

当按下表中的每一行时,我会被重定向到相应 vendor 的个人资料。编辑配置文件后,我按后退按钮并再次返回到表格页面。在这个阶段,我开始调试 $.get("/ajax_refresh_vendors_list_table/", data, function(response)我还在 template = 'vendors/vendors_list_paginator.html' 处放置了一个断点(我们将其称为断点 A)

$.get 函数中观察到一个非常奇怪的行为:未调用相应的 Django View (我没有看到我的应用程序在断点 A 处停止),但 $(' #my_table').find('tbody').html(response); 直接执行,就好像 $.get 函数应该成功执行一样!!!

换句话说,$.get函数是在没有服务器端任何参与的情况下执行的(我强调any这个词。一开始我以为可能是我搞乱了URLConf文件和其他一些 View 为了检查这一点,我在按下浏览器后退按钮之前清除了 Django IDE 控制台,按下后,在 Django IDE 控制台中看不到任何内容,这意味着 $.get 请求已成功执行,而没有调用任何 View !!!)和分页有关系吗?我完全迷失了。请帮忙!

更新

根据Sardorbek的回答,我在定义ajax_refresh_vendors_list_table之前包含了以下装饰器

@require_http_methods(["GET"])
@never_cache
def ajax_refresh_vendors_list_table(request):
...

最佳答案

嗯...看起来您的浏览器正在缓存此请求。尝试用 never_cache 包装此网址

never_cache(url(...))

关于javascript - Django Ajax - $.get 方法成功函数在没有调用任何服务器端 View 的情况下执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com