首页 > 解决方案 > Sweet Alert 未显示,但响应消息显示但在新浏览器中打开。我该如何解决这个问题?

问题描述

这是表单的 html 代码

{% extends 'frontend/master/master.html' %}

{% block content %}


<h1>contact page</h1>
<hr>
<form action="" method="POST">
   {% csrf_token %}
    {{my_form}}
    <br>
<button id="send_mail_ajax" class="btn btn-success">Send</button>
</form>

{% endblock %}

来自 custom.js 的代码一切正常,但是当我想显示来自 django 库的 json 响应时,它会在新选项卡中打开

 $(document).ready(function() {
           $('#send_mail_ajax').on('click', function (event) {
              event.preventDefault();
              let sender = $('#id_sender').val();
              let subject = $('#id_subject').val();
              let message = $('#id_message').val();
              let data = { sender: sender, subject: subject, message: message };
              $.ajax({
                 type: 'post',
                 url: 'http://127.0.0.1:8000',
                 data: data,
                 csrftoken= jQuery("input[name=csrfmiddlewaretoken]").val(),
                 success: function (response) {
                    Swal.fire(
                       'Mail',
                       response.message,
                       'success'
                     )
                 }
              })
           });
        });

来自views.py的代码
我也尝试使用装饰器库中的@csrf_exempt,但它显示403被禁止。

def contact(request):
   if request.method == 'POST':
      sender = request.POST.get('sender')
      subject = request.POST.get('subject')
      message = request.POST.get('message')
      send_mail(subject, message, sender, ['razeevstha002@gmail.com'])
      resData = dict()
      resData['message'] = "Successfully Send"
      return JsonResponse(resData)
   else:
      data = {
         'my_form':ContactForm
      }
      return render(request, 'frontend/pages/contact/contact2.html',data)

标签: javascriptdjango

解决方案


推荐阅读