Python 通过POST方法发送数据以在AJAX请求中显示

Python 通过POST方法发送数据以在AJAX请求中显示,python,django,ajax,django-class-based-views,Python,Django,Ajax,Django Class Based Views,要发布并将字符串传递给views.py,views.py中的post方法可以从Ajax接收值,但我无法在Ajax成功方法中获得要打印的结果值 我试图返回HTTPresponse、重定向和渲染,但似乎没有任何效果 //阿贾克斯// $("#viewData").click(function(event){ $.ajax({ type: "POST", data: {

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

我试图返回HTTPresponse、重定向和渲染,但似乎没有任何效果

//阿贾克斯//

$("#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"})

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

  • 您可能会在视图中遇到错误,并且无法注意到它,因为您在ajax请求中没有涉及错误案例。只需像这样更新ajax请求调用,看看是否出现错误
  • 您没有为请求指定
    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);
          }
    });
    

    是否有内容打印到控制台?每次单击按钮时,console.log都会打印空白值。我已经更新了代码,但没有遇到错误,控制台只打印空值。我注意到您的ajax请求不包含
    url
    参数。您确定您的视图成功接收到请求吗?视图通过验证tempData字符串成功接收请求,因为它进入了if函数。我已更新了代码,但它只打印了一个空行,然后在下一行中打印了“success”。这意味着您的响应正在输入
    success
    函数,但没有数据。您必须确保响应中预期的
    数据类型
    正确,并且在视图中返回有效的响应。