【问题标题】:Sent data through POST method to show in AJAX request通过 POST 方法发送数据以显示在 AJAX 请求中
【发布时间】:2019-12-24 10:43:54
【问题描述】:

Ajax 方法发布并将字符串传递给views.py,views.py 中的post 方法可以从ajax 接收值,但我无法在ajax 成功方法中获取结果值打印回来。

我已尝试返回 HTTP 响应、重定向、渲染,但似乎没有任何效果。

//Ajax//

$("#viewData").click(function(event){

                $.ajax({
                    type: "POST",
                    data: {
                        tempData : "permView",
                        csrfmiddlewaretoken: '{{ csrf_token }}',
                    },
                    success: function(result) {
                        console.log('{{ result }}')
                    },

                });
                event.preventDefault()
            });
        });

//Python//views.py

class SpreadSheetView(TemplateView):
    template_name = 'spreadsheet.html'

    def get(self, request, *args, **kwargs):
        return render(request, self.template_name, {'type': '86'})

    def post(self, request):
        if request.POST['tempData'] == 'permView':
            return render(request, self.template_name, {'result': "test result"})

【问题讨论】:

  • 控制台打印了一些东西吗?
  • 每次单击按钮时,console.log 都会打印空白值。

标签: python django ajax django-class-based-views


【解决方案1】:

您遇到以下两个问题之一:

  1. 您可能会在视图中收到错误并且无法注意到它,因为您没有在 ajax 请求中涵盖错误情况。只需像这样更新您的 ajax 请求调用,看看您是否收到错误。
  2. 您没有为请求指定dataType 参数,这会导致 ajax 错误地猜测您的响应类型。

要涵盖这两项,请更新您的请求,例如:

$.ajax({
      type: "GET",
      dataType : 'html', # or other types, depending on your needs.
      data: {
          tempData : "permView",
          csrfmiddlewaretoken: '{{ csrf_token }}',
      },
      success: function(data, status) {
          console.log(data)
          console.log(status)
      },
      error: function(xhr, status, error) {
          console.log(status);
          console.log(error);
      }
});

【讨论】:

  • 我已经更新了代码但没有遇到任何错误,控制台只打印空值。
  • 我注意到您的 ajax 请求不包含 url 参数。您确定您的视图正在成功接收请求吗?
  • 视图在通过验证 tempData 字符串进入 if 函数时成功接收到请求。
  • 我已经更新了代码,但它只打印一个空行,然后在下一行中显示“成功”。
  • 这意味着您的响应正在输入没有数据的success 函数。您必须确保您在回复中所期望的 dataType 是正确的,并且您在视图中返回了有效的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2014-09-15
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多