jQuery.trim()失效:Ajax返回JSON字符串无法获取指定键值
问题分析与解决办法
嘿,我一眼就看出问题所在啦!你alert出来的是标准的JSON字符串,但这说明你的data变量目前还只是字符串类型,不是JavaScript对象——所以直接用data.ProviderID自然拿不到值,因为字符串没有这个属性呀😯
快速验证方法
你可以在success回调里先加一行代码确认:
console.log(typeof data);
如果输出是string,那就坐实了这个问题;要是object才说明是已经解析好的JSON对象。
解决办法(按优先级排序)
让后端返回正确的响应头
最省心的方式是让接口返回时带上Content-Type: application/json的响应头,jQuery的Ajax会自动识别并把响应解析成JavaScript对象,之后你直接用$.trim(data.ProviderID)就能正常拿到值了。手动指定dataType参数
如果后端暂时没法修改,你可以在Ajax请求里加上dataType: 'json',强制jQuery把响应按JSON格式解析:$.ajax({ url: '你的请求地址', method: 'POST', // 或者GET,看你的实际请求方式 dataType: 'json', // 关键参数 success: function(data) { alert($.trim(data.ProviderID)); } });手动解析JSON字符串
要是上面两种方式都用不了,那就自己把字符串转成对象:success: function(data) { // 先解析字符串为对象 var parsedData = JSON.parse(data); // 再获取属性 alert($.trim(parsedData.ProviderID)); }
试一下上面的方法,应该就能解决你的问题啦!
内容的提问来源于stack exchange,提问作者Zeeshan
相关产品推荐
相关产品推荐

