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

AJAX请求中success回调函数不生效是什么原因?

问题根因
  • 你代码里配置的dataType: "json"是导致success回调不触发的直接原因:该参数会强制jQuery将后端返回的内容按JSON格式解析,只要返回内容不符合JSON语法规范,解析流程就会报错,jQuery会直接触发error回调,不会进入success逻辑。
  • 从你写的$("#" + buttonNumber).html(data)逻辑可以判断,/Button/ShowOneButton接口返回的是可直接插入页面的HTML片段,本身就不是JSON结构,强行指定按JSON解析必然失败。
  • 其他人用相同代码能正常运行,是因为他们调用的对应后端接口确实返回了合法JSON内容,和你当前环境的接口返回格式不匹配。
修复方法
  • 直接删除dataType: "json"这行配置即可,jQuery会自动根据接口响应头的Content-Type识别内容类型,返回的HTML片段会直接作为字符串传入success回调,你的DOM插入逻辑就能正常执行。
  • 如果需要显式指定类型,把dataType的值改成"html"即可。
  • 排查阶段建议补充error回调打印错误日志,能快速定位请求异常问题,不用盲猜。

修复后的完整代码:

function doButtonUpdate(buttonNumber) {
    $.ajax({
        method: "POST",
        url: '/Button/ShowOneButton',
        data: {
            "buttonNumber": buttonNumber
        },
        dataType: "html", // 也可以直接删掉这行让jQuery自动识别
        success: function (data) {
            console.log(data);
            $("#" + buttonNumber).html(data);
        },
        error: function(xhr, status, err) {
            console.log('请求异常:', status, err, xhr.responseText);
        }
    })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:33:12