You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:
      <script>
          var insertUrl = '@Url.Action("InsertStatement", "Home")';
      </script>
      <script src="your-js-file.js"></script>
      
      然后在JS里用url: insertUrl,

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:35:18