$.ajax设置data: form时Chrome报Uncaught SyntaxError错误如何解决
错误原因
这个报错是纯JavaScript语法书写错误导致的,和FormData、ajax异步提交逻辑本身无关,具体问题点有两个:
type:'POST'配置项末尾缺少逗号。JavaScript对象的多个属性之间必须用逗号做分隔,缺失逗号后解析器无法识别后续的data属性,直接中断解析抛出语法错误。- 你把控制台输出的报错文本
Uncaught SyntaxError: Unexpected identifier直接写在了data: form,代码行的末尾,这串文本不属于合法的JavaScript语法结构,解析器读到该位置时无法识别为合法的标识符或对象属性,直接触发报错。
你代码里配置的processData: false、contentType: false是FormData异步提交的正确配置,这部分逻辑没有问题。
修复方案
删除代码中误写的报错文本,给type:'POST'配置项补上末尾的逗号即可,修复后的可运行代码如下:
let form = new FormData(this); $.ajax({ url: "RegisterServlet", type: 'POST', data: form, success: function(data, textStatus, jqXHR) { console.log(data); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR); }, processData: false, contentType: false });
额外排查提示
如果修复语法错误后仍存在提交异常,可优先排查两点:
- 确认
new FormData(this)中的this指向正确,必须绑定到触发提交的原生form DOM元素,否则FormData无法正常采集表单字段值。 - 后端接口不要强制按
application/x-www-form-urlencoded格式解析请求体,FormData默认使用multipart/form-data编码格式,可同时承载普通文本字段和上传文件。
内容的提问来源于stack exchange,提问作者DEBRANA DUTTA
相关产品推荐
相关产品推荐

