Repository navigation
v4.5.1 - jQuery jqXHR 兼容性改进
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 媒体类型变体