使用AJAX按钮输出MySQL数据时遇net::ERR_TOO_MANY_REDIRECTS错误求助
排查并解决AJAX请求出现ERR_TOO_MANY_REDIRECTS及404错误
错误原因分析
ERR_TOO_MANY_REDIRECTS 表示请求陷入重定向循环,结合404状态码说明:服务器处理display.php请求时,反复将请求重定向到不存在的资源,最终触发浏览器的重定向次数限制。同时前端JS语法错误、PHP输出格式问题也会影响整体功能。
分步解决步骤
1. 修正前端JS语法错误
你的代码末尾多了一个多余的});,会导致JS语法报错,直接影响AJAX请求触发。修正后的代码:
$("#display").click(function() { $.ajax({ //create an ajax request to display.php type: "GET", url: "display.php", dataType: "html", //expect html to be returned success: function(response){ $("#responsecontainer").html(response); //alert(response); } }); });
2. 确认display.php文件路径与存在性
- 确保
display.php和发起AJAX请求的页面在同一目录,若不在需写正确相对路径(如./api/display.php)或绝对路径(如/web4/display.php)。 - 检查服务器文件名大小写,Linux系统区分大小写,
Display.php与display.php会被视为不同文件。 - 直接在浏览器地址栏访问
http://web4/display.php,若仍出现404或重定向,说明问题出在服务器配置或文件本身,与AJAX无关。
3. 排查服务器重定向规则
- Apache服务器:查看网站根目录下的
.htaccess文件,检查是否存在错误重写规则(如强制HTTPS规则写错、URL重定向循环)。 - Nginx服务器:对应server配置块中,检查
rewrite或try_files规则是否导致display.php请求被反复重定向。
4. 修复PHP代码的输出问题
你的PHP代码使用转义的<和>,输出后是纯文本而非HTML标签,且表格标签未闭合。修正后的PHP代码:
<?php $dsn = 'mysql:dbname=web4;host=localhost'; $username = 'root'; $password = ''; try { $pdo = new PDO( $dsn, $username, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); $sql = 'SELECT * FROM account '; foreach ($pdo->query($sql) as $one) { echo '<tr><td>'; print $one['login']; echo '</td></tr>'; } } catch (PDOException $e) { echo 'Подключение не удалось: ' . $e->getMessage(); } ?>
- 将查询逻辑放入
try块内,避免连接失败时的错误信息破坏AJAX响应结构。 - 补全表格闭合标签,确保输出HTML结构合法。
5. 测试验证
完成修改后,重新点击按钮查看控制台错误,同时检查#responsecontainer是否正常显示数据库数据。若直接访问display.php能正常输出表格,AJAX请求即可正常工作。
内容的提问来源于stack exchange,提问作者pQuer
相关产品推荐
相关产品推荐

