如何在Ajax JSON响应中提取以error开头的字段并赋值
问题:如何检测JSON响应中所有以"error"开头的字段并赋值给本地变量?
现有Ajax请求代码
var getDetails = function(){ event.preventDefault(); var id = document.getElementById("recipientIdM").value; var id2 = document.getElementById("recipientIdD").value; var url = "/sch/recipientAjaxV1.jssp?id="+id+"&id2="+id2; document.controller.setValue('/ctx/vars/id', id); document.controller.setValue('/ctx/vars/id2', id2); var request = $.ajax({ type: 'GET', url: url, async: true, success: function(response) { //alert(JSON.stringify(response)); $('#recipientData').trigger("reset"); addToForm(response) } }); }
返回的JSON响应示例
{ "idM": 13249906, "cmOneIDM": 888888, "jurisdictionM": "SCPB - LON", "firstNameM": "David Dynamic", "lastNameM": "Test User", "emailM": "email@email.com", "error2": "WDB-200001 SQL statement 'SELECT R0.iRecipientId, 'could not be executed. Param(0)=132486762 WDB-200011 The requested database record does not exist. Cannot load document of type 'Recipients (nms:recipient)' satisfying condition '([/@id] = 132486762)'." }
解决方案
你可以在Ajax的success回调里,遍历JSON响应的所有键名,筛选出以error开头的字段,将这些键值对存入本地变量。修改后的success函数如下:
success: function(response) { //alert(JSON.stringify(response)); $('#recipientData').trigger("reset"); addToForm(response); // 存储所有以error开头的字段 const errorFields = {}; // 遍历响应的所有键名 Object.keys(response).forEach(key => { // 判断键名是否以"error"开头 if (key.startsWith('error')) { errorFields[key] = response[key]; } }); // 现在errorFields变量里就存了所有符合条件的字段,可按需使用 // 示例:打印所有错误字段 console.log('检测到的错误字段:', errorFields); }
说明
- 用
Object.keys(response)获取响应对象的所有键名数组 - 通过
String.startsWith('error')判断键名是否符合前缀要求 - 符合条件的键值对会被存入
errorFields对象,后续可根据业务需求处理这些错误信息(比如展示到页面、记录日志等)
内容的提问来源于stack exchange,提问作者David Garcia
相关产品推荐
相关产品推荐

