JQuery Ajax无法运行,疑为URL配置问题求助
问题排查与解决思路
1. AJAX请求URL错误
你在JS里用了@(Url.Action("InsertStatement","Home")),如果这段JS是放在单独的.js文件中,Razor语法不会被解析,会直接把这段字符串作为URL发送,导致404错误。
- 解决方法:
- 如果JS写在.cshtml页面里,把转义的
"换成单引号:url: '@Url.Action("InsertStatement", "Home")', - 如果是单独的JS文件,在页面里通过全局变量传递URL:
然后在JS里用<script> var insertUrl = '@Url.Action("InsertStatement", "Home")'; </script> <script src="your-js-file.js"></script>url: insertUrl,
- 如果JS写在.cshtml页面里,把转义的
2. 未设置正确的ContentType
你注释掉了contentType,但用JSON.stringify()发送JSON格式数据时,必须告诉服务器请求体是JSON:
jQuery.ajax({ // ...其他配置 contentType: "application/json; charset=utf-8", data: JSON.stringify({ firstName: firstName, secName: lastName, age: age, sex: sex, title: title }), // ... });
如果不设置,MVC默认会按表单格式解析,导致控制器参数接收不到值,甚至返回400错误。
3. AJAX错误回调函数名错误
jQuery AJAX里没有failure回调,正确的错误处理是用error:
error: function (errMsg) { console.log(errMsg.responseText); // 打印详细错误信息 alert("请求失败:" + errMsg.statusText); }
这样能正确捕获请求错误,方便排查。
4. 确保RadioButtonList取值正确
检查getSelectedSexValue()函数是否正确实现,比如:
function getSelectedSexValue() { return $('input[name="<%=rblSex.ClientID%>"]:checked').val(); }
如果函数返回undefined或空值,会导致参数错误。
5. 修复SQL注入风险(关键!)
你直接拼接SQL字符串,存在严重的SQL注入漏洞,必须改用参数化查询:
public JsonResult InsertStatement(string firstName, string secName, int age, string sex, string title) { try { using (SqlConnection con = new SqlConnection(conn)) { con.Open(); string sqlStatement = "insert into Employee values (@firstName, @secName, @age, @sex, @title)"; SqlCommand sql = new SqlCommand(sqlStatement, con); // 添加参数 sql.Parameters.AddWithValue("@firstName", firstName); sql.Parameters.AddWithValue("@secName", secName); sql.Parameters.AddWithValue("@age", age); sql.Parameters.AddWithValue("@sex", sex); sql.Parameters.AddWithValue("@title", title); sql.ExecuteNonQuery(); } return Json("success", JsonRequestBehavior.AllowGet); } catch (Exception ex) { // 打印异常详情到日志,方便排查 System.Diagnostics.Debug.WriteLine(ex.Message); return Json("Failure", JsonRequestBehavior.AllowGet); } }
用using语句可以自动释放连接,避免资源泄漏。
6. 检查Network错误详情
从错误提示来看,大概率是URL错误或者参数解析失败。可以在Network标签里查看:
- Request URL是否正确指向控制器的Action
- Request Body是否正确发送了JSON数据
- Response里的详细错误信息(比如404是找不到Action,400是参数错误)
内容的提问来源于stack exchange,提问作者Douglas
相关产品推荐
相关产品推荐

