【问题标题】:how can I get Django-ajax popup button to work?如何让 Django-ajax 弹出按钮工作?
【发布时间】:2019-05-15 15:18:35
【问题描述】:

我正在尝试为我的日历中的新任务创建一个弹出表单,但我从来没有让它工作。我为此目的使用 Ajax。这是我的代码。 Ajax 位于名为“plugin.js”的静态文件夹中

base.py

{% load static %}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bookstore</title>
    <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
  </head>
  <body>
    <div class="container">
      {% block content %}
      {% endblock %}
    </div>
    <script src="{% static 'js/jquery-3.1.1.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="{% static 'js/plugin.js' %}"></script>
    {% block javascript %}
    {% endblock %}
  </body>
</html>

日历.html

{% extends 'cal/base.html' %}

{% block title %}
Quality Assurance Calendar
{% endblock %}

{% block content %}
<div class="clearfix">
    <a class="btn btn-info left" href="{% url 'cal:calendar' %}?{{ prev_month }}"> Previous Month </a>
    <a class="btn btn-info right" href="{% url 'cal:calendar' %}?{{ next_month }}"> Next Month </a>
 {% if user.is_authenticated %}


    <button type="button" class="btn btn-primary show-form">
        <span class="glyphicon glyphicon-plus"></span>
      New Task
    </button>

{% endif %}


</div>

{{ calendar }}

<div class="modal-fad" id="modal-task">
    <div class="modal-dialog">
        <div class="modal-content"></div>
    </div>
</div>
{% endblock %}

view.py 的一部分

    def task_create(request, task_id=None):
    # if not request.user.is_authenticated:
    #     return redirect('%s?next=%s' % ('account/login/', request.path))
    instance = Task()
    if task_id:
        instance = get_object_or_404(Task, pk=task_id)
    else:
        instance = Task()

    form = TaskForm(request.POST or None, instance=instance)
    # form.user = request.user
    if request.POST and form.is_valid():
        # form = form.save(commit=False)
        # form.user = request.user
        form.save()
    #     return HttpResponseRedirect(reverse('cal:calendar'))
    # return render(request, 'cal/task_create.html', {'form': form})
    html_form=render_to_string('cal/task_create.html', {'form': form}, request=request)
    return JsonResponse({'html_form':html_form})

还有 plugin.js

    $(document).ready(function(){
    $('.show-form').click(function(){
        $.ajax({
            url: '/task/create',
            type: 'get',
            dataType:'json',
            beforeSend: function(){
                $('#modal-task').modal('show');
            },
            success: function(data){
                $('#modal-task .modal-content').html(data.html_form);
            }
    })

})

task_create.html

 {% load crispy_forms_tags %}
<button class="btn btn-primary show-form" data-url="{% url 'cal:task_create' %}"></button>
        {% csrf_token %}
        <!-- Modal Header -->
        <div class="modal-header">
        <h5 class="modal-title">Create Task</h5>
        <button type="button" class="close" data-dismiss="modal" aria-lable ="Close">
            <span aria-hidden="True">&times;</span>
        </button>
        </div>

        {{ form|crispy}}
        <div class="modal-body">
        Modal body..
        </div>
        <!-- Modal footer -->
        <div class="modal-footer">
        <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary" >Save changes</button>
        </div>
</form>

新任务按钮一直没有响应!!! '''''''''''''''''''''''''''''''''''''''''''

【问题讨论】:

  • 您是否确认正在调用点击处理程序?如果是,那么对/task/create 的请求是否被提出?如果有,它会如何反应?调试时,选择一个开始的地方,通常从一端开始,然后开始消除可能性,同时避免做出任何假设。
  • “从未回应”是什么意思?你看到模态了吗?还是什么都没有?此外,您的表单处于模式中,因此您无法在 ajax 调用中弹出模式。您应该只打开模式。当用户提交表单 (.on('submit')) 时,执行 ajax 调用。应该是 POST 而不是 GET。
  • 你的按钮里面什么都没有写,它只是一个小盒子,你怎么点击它。如果您能够以某种方式单击它,则在单击处理程序中添加 console.log 以确保单击按钮时该函数正在运行。如果它正在工作,请在 ajax 调用的成功或失败中写入一些 console.log,以确保它从服务器获取正确的数据。这就是你调试 js 代码的方式,添加大量控制台日志以找出代码的哪一部分在何时运行。问题解决后不要忘记删除它们。
  • 另外,您正试图将从 ajax 调用收到的 html 放入 #modal-task .modal-content 但您的 html 中不存在此类元素,我认为 jquery 在此类情况下不会引发任何错误,它只是随便。
  • 当我点击什么都没有发生。

标签: ajax django popup


【解决方案1】:

整理好了。 我在本教程中得到了我需要的所有东西 这是链接(https://simpleisbetterthancomplex.com/tutorial/2016/08/29/how-to-work-with-ajax-request-with-django.html

感谢所有宝贵的 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多