jQuery AJAX请求网络正常但success回调未触发问题求助
问题根因
你配置AJAX时指定了dataType: "json",jQuery会强制对后端返回内容做JSON格式校验,只要解析失败,哪怕HTTP请求状态码是200,也会直接走error回调,不会触发success,你拿到的parsererror就是JSON解析失败的直接报错。
排查&解决步骤
- 检查后端
processes/rewind-knock.php的输出
打开浏览器Network面板找到对应请求的「响应」标签页,查看返回内容是否有多余字符:最常见的问题包括PHP文件开头/结尾多了空行、空格,或者代码中输出了调试日志、PHP报错信息,哪怕只有一个多余字符都会导致JSON解析失败。 - 修正后端返回逻辑
确保PHP在输出JSON前没有任何其他输出,同时添加正确的响应头,参考代码:<?php // 文件开头不要有任何空行、空格、HTML内容 header('Content-Type: application/json; charset=utf-8'); // 业务逻辑处理 $res = [ 'code' => 0, 'msg' => '操作成功' ]; echo json_encode($res); // 结尾不要写?>闭合标签,避免后续有多余输出 - 临时调试方案
暂时把dataType: "json"改为dataType: "text",此时success回调会触发,打印返回的文本内容就能直接看到冗余的异常字符,针对性清理后端输出即可。
内容的提问来源于stack exchange,提问作者Relaxing Music
相关产品推荐
相关产品推荐

