Django - AJAX - 为啥我需要 url 参数?

Posted

技术标签:

【中文标题】Django - AJAX - 为啥我需要 url 参数?【英文标题】:Django - AJAX - Why do I need url parameter?Django - AJAX - 为什么我需要 url 参数? 【发布时间】:2019-01-06 21:02:47 【问题描述】:

这是我第一次使用 AJAX,我不明白为什么我需要在 JS Ajax 调用中指定 url 参数。

% block javascript %
  <script>
    $("#id_username").change(function () 
      $.ajax(
        url: '/some_new_url/',
        data: 
          'something': ...
        ,
        success: function (data) 
          if (data.is_taken) 
            alert("Data is already in DB");
          
        
      );

    );
  </script>
% endblock %

据我了解,AJAX 用于在服务器端执行某些操作而无需刷新页面。所以它不应该在向服务器发送数据时重定向到新的url,并保持在同一个 URL 上。然而 AJAX 调用需要url 参数。

我真的不喜欢这样,因为设置一个新的url 意味着我必须在我的app/urls.py 中添加另一个url 模式。

re_path(r'^create/$', views.Some_View.as_view(), name='create'),

因此,在我的 views.py

中创建另一个 view
class Some_View(ListView):
    model = SomeModel
    fields = '__all__'

但是,我已经有一个CBV 在用户端生成表单字段并接受用户输入。我只想让我现有的CBV 使用 AJAX 调用将数据保存到数据库。

由于我不明白 url 的用途是什么,我不知道如何设置我的新 url 模式,以及CBV。我可以在这里得到一些解释吗?

++ 这只是一个额外的问题,但我的最终目标是生成多个表单字段和多个 Submit 按钮,它们使用 AJAX 将相应的表单输入数据发送到服务器。如果对如何调整 AJAX 代码有任何建议,我将不胜感激。

【问题讨论】:

Ajax 需要将数据发送到服务器。这需要一个 URL。它还能如何工作? 将数据发送到您拥有的相同 url。更新该方法以适用于 AJAX 请求。参考:django.http.HttpRequest.is_ajax @SachinKukreja 你有任何示例代码 sn-p 的链接吗?包括AJAX函数、CBV和urls.py? 我想如果你在网上好好搜索一下,你会找到一个可行的例子。 【参考方案1】:

AJAX 请求只是对服务器上 URL 的常规 HTTP 请求。 AJAX 请求与普通浏览器 GET 或 POST 发出的请求之间的唯一区别在于,使用 AJAX,从服务器返回的结果将返回到您的 javascript 函数,然后您可以决定如何处理这些结果。

所以不会自动更新任何内容。

如果你想在服务器上保存一些东西,你需要在服务器上有一个视图,它能够理解你在 AJAX 请求中发送的数据,保存它,然后发回一个响应,再次,你的javascript代码需要能够看懂。

但是,如果您已经有一个能够执行您想要的操作的视图,您可以将它用于您的 AJAX 请求,您只需发送一个请求,其中包含视图所需的所有内容。

【讨论】:

以上是关于Django - AJAX - 为啥我需要 url 参数?的主要内容,如果未能解决你的问题,请参考以下文章

django为啥不能实现ajax

为啥 django page cms get_absolute_url 返回一个空字符串?

为啥我的 AJAX 方法将表单输入发送到 URL?

我想知道为啥当我发送一个数组以使用 jquery ajax (django,jquery) 查看时发生错误

Django - 发出 Ajax 请求

为啥无法访问 Django 基本 URL?