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

Django中AJAX无法获取表单值且报语法错误,求解决方案

问题分析与修复方案

你的Uncaught SyntaxError: missing ) after argument list错误主要由AJAX代码里的拼写错误、语法问题和选择器错误导致,我帮你逐个排查并修正:

1. 函数名拼写错误

你把function写成了functiom,这是JavaScript解析器报错的直接原因,必须修正。

2. CSRF令牌选择器错误

你用$('input[msg=csrfmiddlewaretoken]')获取CSRF令牌,但Django生成的CSRF令牌input标签的name属性是csrfmiddlewaretoken,不是msg,所以选择器要改成$('input[name=csrfmiddlewaretoken]')。

3. AJAX配置语法错误

  • data对象末尾多了一个多余的#符号,导致JSON格式错误;
  • 配置项的逗号、括号闭合需要调整,保证语法完整。

修正后的完整AJAX代码

<script>
$(document).on('submit','#chat-form',function(e){
    e.preventDefault();
    $.ajax({
        type: 'POST',
        // 建议用Django的url模板标签代替硬编码,比如{% url 'chat-view' %},避免部署时URL变化
        url: 'http://127.0.0.1:8000/qasim/',
        data: {
            msg: $('#chat-msg').val(),
            csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val()
        },
        success: function(response){
            alert("消息发送成功");
            // 成功后清空输入框,提升用户体验
            $('#chat-msg').val('');
        },
        error: function(xhr){
            // 添加错误处理,方便排查问题
            alert("请求出错: " + xhr.statusText);
        }
    });
});
</script>

优化后的views.py代码

你的post方法本身就是处理POST请求的,无需重复判断request.method == 'POST',可以简化:

from django.views.generic import TemplateView
from django.http import HttpResponse

class index(TemplateView):
    template_name = 'qasim/chat.html'

    def get(self, request):
        return render(request, self.template_name)

    def post(self, request):
        msg2 = request.POST.get('msg', None)
        # 打印到控制台验证是否成功获取值
        print("收到前端消息:", msg2)
        # 这里可以添加消息处理逻辑,比如保存到数据库
        return HttpResponse('消息已接收')

额外建议

  • 尽量用Django的{% url %}模板标签生成AJAX请求的URL,比如在urls.py中给视图配置name='chat-view'后,就可以写url: '{% url 'chat-view' %}',避免硬编码URL带来的适配问题;
  • 保留error回调函数,方便在请求出错时快速定位问题;
  • 成功提交后清空输入框,让用户体验更流畅。

现在运行修正后的代码,就能正常获取表单值并传递到views.py中了,你可以通过控制台打印的内容验证是否成功接收到消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:03:27