使用Ajax jQuery与Node.js时遭遇404错误,请求排查原因
问题原因及解决方法
核心问题:路由匹配不匹配
你的Node.js路由定义为/createNonExist/:tagName,其中:tagName是URL路径参数,要求请求URL必须是/manageKeyword/createNonExist/具体标签名的格式。但你的Ajax请求URL是/manageKeyword/createNonExist,同时用data字段传递tagName——GET请求的data会被转换为URL查询参数(即?tagName=example-tag),这和路由期望的路径参数格式完全不符,服务器找不到对应路由,因此返回404错误。
次要问题:Ajax语法错误
你的if语句多写了一个左括号:if((true){,正确写法应为if(true){,该语法错误会导致JavaScript代码无法执行。
两种修正方案
方案1:保留路径参数格式(修改Ajax请求)
不需要改动Node.js路由,只需把tagName放到URL路径中,匹配路由的:tagName参数:
<script> if(true){ $.ajax({ type: "GET", url: '/manageKeyword/createNonExist/example-tag', cache: false, timeout: 5000, success: function (res) { console.log(res); }, error: function (jqXHR, textStatus, errorThrown) { alert('error ' + textStatus + " " + errorThrown); } }); } </script>
方案2:改用查询参数传递(修改Node.js路由)
修改路由定义,去掉路径参数,改为接收查询参数:
router.get("/createNonExist", KeywordCtrl.apiCreateNotExistedKeyword);
然后在apiCreateNotExistedKeyword控制器中,通过req.query.tagName获取参数,这样你原来的Ajax请求(用data传参)就能正常匹配路由。
内容的提问来源于stack exchange,提问作者Javad-M
相关产品推荐
相关产品推荐

