Skip to content

v4.5.1 - jQuery jqXHR 兼容性改进

Choose a tag to compare

@leeguooooo leeguooooo released this 22 Oct 03:00
· 158 commits to main since this release

v4.5.1

修复 Issue #23 - jQuery ajax POST 请求兼容性

核心改进:

  • 添加 toJqXHR() 函数,将 cross-request 响应转换为标准 jQuery jqXHR 对象
  • 提供完整的 jqXHR 属性和方法:responseText, responseJSON, status, statusText, readyState, getResponseHeader(), getAllResponseHeaders()

关键修正:

  • responseJSON 现在仅在 Content-Type 为 application/json 时设置
  • 对于 text/plain、text/html、XML 等非 JSON 响应,responseJSON 保持 undefined
  • 防止代码误将字符串当作 JSON 对象处理
  • 符合 jQuery 标准行为

代码示例:

$.ajax({
    url: url,
    type: 'post',
    dataType: 'json',
    data: params,
    complete: function (jqXHR, status) {
        // 现在可以正常访问 jqXHR.responseText
        var data = JSON.parse(jqXHR.responseText);
        // 或者直接使用 jqXHR.responseJSON (仅 JSON 响应)
        if (jqXHR.responseJSON) {
            console.log(jqXHR.responseJSON);
        }
    }
});

Issue #22 分析 - YApi context.responseData

验证结果:

  • 代码逻辑正确,context.responseData 确实返回解析后的对象
  • 添加了 12 个测试验证 YApi 场景,全部通过
  • 如果用户仍遇到问题,可能是浏览器缓存或版本问题

调试建议:

  • 在 Chrome 扩展管理页面重新加载扩展
  • 清除浏览器缓存
  • 确认使用最新版本 v4.5.1+

测试改进

测试覆盖增强:

  • 新增 21 个 jQuery jqXHR 测试
  • 新增 12 个 YApi context.responseData 测试
  • 重写测试以使用真实生产代码(真正的回归保护)
  • 所有测试通过 (115/115)

测试质量改进:

  • 导入真实的 bodyToString helper 而非重新实现
  • 测试现在真正覆盖生产代码
  • 如果生产代码回退,测试会失败

技术细节

提交记录:

  • a716049 - jQuery ajax jqXHR 对象支持
  • 258f5ee - responseJSON 行为改进
  • 16e8df1 - YApi context 测试
  • c3a78af - 测试重写使用生产代码
  • 9731303 - 版本升级到 v4.5.1

完整兼容性:

  • jQuery 1.x - 3.x
  • YApi 所有版本
  • Chrome 88+

未来改进:

  • 可考虑支持 application/*+json 等 JSON 媒体类型变体