【问题标题】: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?
  • 我想如果你在网上好好搜索一下,你会找到一个可行的例子。

标签: ajax django django-urls


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2016-02-27
    • 1970-01-01
    • 2016-10-17
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多