You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Ajax POST传递字符串至Django视图,无法获取返回结果

解决Django Ajax POST请求后success回调无法获取返回结果的问题

我帮你排查下问题所在哈,你遇到的核心问题其实是前后端数据传递的逻辑没对齐,咱们一步步来改:

问题根源拆解

  1. 前端模板变量的误区:你在success回调里写的console.log('{{ result }}'),这个{{ result }}是Django模板引擎在页面第一次加载时就渲染完成的,当你触发Ajax异步请求时,这个变量早就被替换成页面初始加载时的值(大概率是空的),根本拿不到Ajax返回的新数据。你得直接用回调函数自带的result参数,这才是请求回来的响应内容。

  2. 后端响应格式不对:你用render返回了整个模板页面,Ajax拿到的是完整的HTML代码,而不是你想要的result字符串。Ajax请求更适合接收结构化数据(比如JSON),这样前端能方便提取目标值;redirect是重定向,Ajax会自动跟进但拿到的还是页面内容,也不符合需求。

修改后的完整代码

前端Ajax代码调整

$("#viewData").click(function(event){
    $.ajax({
        type: "POST",
        url: window.location.href, // 或者直接写你的视图路径,比如"/spreadsheet/"
        data: {
            tempData : "permView",
            csrfmiddlewaretoken: '{{ csrf_token }}',
        },
        dataType: 'json', // 明确指定接收JSON格式数据
        success: function(result) {
            console.log(result.data); // 直接用回调参数里的目标字段
        },
        error: function(xhr, status, error) {
            // 加上错误回调方便排查问题
            console.error('请求出错:', error);
        }
    });
    event.preventDefault();
});

后端views.py代码调整

from django.http import JsonResponse
from django.views.generic import TemplateView
from django.shortcuts import render

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):
        # 用get方法避免key不存在时抛出异常
        if request.POST.get('tempData') == 'permView':
            # 返回JSON格式的结构化数据
            return JsonResponse({'data': "test result"})
        # 处理无效请求的情况
        return JsonResponse({'error': 'Invalid request'}, status=400)

额外说明

  • 如果你的需求是返回HTML片段(而非纯数据),可以用render_to_string渲染模板片段,再通过JsonResponse返回,前端拿到后可插入页面;
  • 要是之前用HttpResponse返回纯文本,比如HttpResponse("test result"),前端success里直接console.log(result)就能拿到字符串,但JSON格式更适合传递复杂数据;
  • 务必保证前后端数据格式匹配,dataType: 'json'能让jQuery自动把响应解析成JSON对象,避免手动处理字符串的麻烦。

内容的提问来源于stack exchange,提问作者HellaSpace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:06:10