JS+PHP发起Ajax请求返回DOM而非数据库JSON数据如何解决
问题修复方案
1. 排查路由与路径匹配问题
首先确认AJAX请求填写的../ajax/ajaxSearchByRef.php路径确实指向你贴出的PHP代码文件,没有被服务端重写规则、框架路由拦截转发到其他返回HTML的页面(比如错误页、首页)。你可以直接在浏览器地址栏访问这个PHP路径,如果直接访问也返回完整DOM,说明路径匹配错误或者PHP文件存放位置不对。
2. 修复PHP代码中的SQL语法漏洞
你写的LIKE查询没有给通配符加引号,会触发SQL语法报错,如果你的环境配置了错误页自动输出完整HTML,就会返回非预期的DOM内容。同时拼接SQL的写法存在SQL注入风险,建议改用预处理写法:
// 原错误代码 $result = $pdo->query("SELECT a.id, a.article, a.designation_en, a.description_en, a.designation_fr, a.description_fr, b.id as group_id, b.name FROM products as a INNER JOIN fct_group as b ON b.id = a.fct_group_id AND a.fct_group_id = b.id WHERE a.article LIKE %".$value."%"); // 修复后的写法 $value = "%{$_POST['value']}%"; $stmt = $pdo->prepare("SELECT a.id, a.article, a.designation_en, a.description_en, a.designation_fr, a.description_fr, b.id as group_id, b.name FROM products as a INNER JOIN fct_group as b ON b.id = a.fct_group_id WHERE a.article LIKE ?"); $stmt->execute([$value]); $list = $stmt->fetchAll(PDO::FETCH_ASSOC);
3. 强制PHP返回JSON格式,阻断额外输出
在PHP代码最顶部加响应头声明,同时关闭调试输出、输出后直接终止程序,避免额外内容污染JSON:
<?php // 放在所有代码最顶部 header('Content-Type: application/json; charset=utf-8'); // 关闭xdebug调试输出与错误展示 ini_set('xdebug.default_enable', 0); ini_set('display_errors', 0); require './functions/functions.php'; try { $pdo = new PDO($dsn, $user, $password); // 开启PDO异常抛出方便排查 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { // 错误也返回JSON格式 echo json_encode(['code' => 500, 'msg' => $e->getMessage()]); exit; } // 中间SQL处理逻辑... echo json_encode($list); exit; // 输出后直接终止,避免文件末尾多余空格、代码输出
4. AJAX请求指定返回格式
在JS的AJAX配置中添加dataType: 'json',明确告诉jQuery预期返回JSON格式:
$('#ref').on('input', function() { let value = $('#ref').val() $.ajax({ type : "POST", url : '../ajax/ajaxSearchByRef.php', data : { value : value }, dataType: 'json', // 新增这行 success:function(msg) { console.log(msg) }, error: function(xhr, err) { console.log('请求异常', err) } }) })
5. 排查额外输出来源
检查引入的functions.php文件、当前PHP文件开头有没有提前输出空格、HTML、BOM头,文件末尾有没有多余的?>标记后的空格、HTML代码,这些内容都会和JSON拼接,导致返回内容不符合预期。
内容的提问来源于stack exchange,提问作者mooncrunch
相关产品推荐
相关产品推荐

