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

AJAX回调不显示成功/失败提示问题 - ASP.NET MVC C#

问题修复方案

首先整理所有会导致该问题的原因及对应修复步骤:

1. 明显代码错误修复

  • JS分支字段大小写不匹配:后端返回的字段是小写message,但JS异常分支写为大写data.Message,会导致异常分支没有提示,修改为统一小写即可。
  • 数值类型传参隐患:imgOfHouse从DOM属性读取默认是字符串类型,虽然控制器断点命中,但序列化过程可能触发隐式转换异常,建议显式转整型。
  • AJAX data参数冗余括号:虽然不直接报错,但不符合标准写法,可移除多余括号。

修复后的JS代码如下:

function AttemptHouseViewingAppointment(house) {
    // 显式转数值类型,避免类型不匹配异常
    var imgOfHouse = parseInt($(house).attr("value"));
    $.ajax({
        type: "POST",
        url: '@Url.Action("AttemptHouseViewingAppointment", "Viewing")',
        // 可暂时注释dataType让jQuery自动识别响应类型,排除json解析失败问题
        // dataType: "json",
        data: {
            userId: @Model.UserId,
            appointmentKey: '@Model.Key',
            chosenHouse: imgOfHouse 
        },
        success: function (data) {
            alert(JSON.stringify(data)); // 先序列化对象看完整返回内容
            if (data.success) {
                alert(data.message);
            } else { 
                alert(data.message); // 统一小写字段名
            }
        },
        error: function (xhr, status, error) {
            alert("请求异常:" + error + "\n响应内容:" + xhr.responseText);
        },
        // 新增完成回调,确认请求是否走完整个生命周期
        complete: function() {
            alert("请求已处理完成");
        }
    });
};

2. 后端潜在逻辑错误

你的控制器查询条件存在逻辑错误,大概率会导致永远进入失败分支:

// 原错误写法:HouseID和userId比较不符合业务逻辑
var house = _ctx.houses.Where(x => x.HouseID == userId && x.Icon == chosenHouse).FirstOrDefault();

正常业务逻辑应该是HouseID和传入的chosenHouse匹配,可修改为:

var house = _ctx.houses.Where(x => x.HouseID == chosenHouse && x.Icon == chosenHouse).FirstOrDefault();
// 后面的?? null是冗余写法,FirstOrDefault查不到本来就返回null,可以直接删除

3. 其他排查方向

如果修改后依然没有弹窗,按以下顺序排查:

  • 打开浏览器开发者工具(F12)的控制台,查看是否有JS运行时报错
  • 切换到网络面板,查看该AJAX请求的响应状态、响应头、响应内容,确认返回的是标准JSON格式
  • 检查浏览器是否开启了弹窗拦截,导致alert被阻止

内容的提问来源于stack exchange,提问作者SarahEvans99

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:02