一、问题:
后端因为Excel导入或者其他原因出现一些奇奇怪怪的不可见字符,比如全角空格、制表符等。用ajax取值的时候,遇到这种情况后台正常,前端也只是抛出200,不算是错误的错误。前台取值处于懵逼状态:没有错却没有值。
二、解决:
暴力直接上代码
/**
* 用于解析后台传来的有特殊字符的JSON串,解决解析出现200错误的情况
* @param url
* @param requestData 参数
* @param callback 回调函数
* @param failCallback 出错时的回调
*/
var baoAjax = function (url,requestData,callback,failCallback) {
$.ajax({
type : "post",
url : url,
dataType:"json",
data:requestData,
success : function(data) {
if($.isFunction(callback)){
callback(data);
}
},
error:function(xhr, textStatus, errorThrown){
(xhr);
if(textStatus=="parsererror"){
var jsonString = ;
//解析异常
try{
callback((jsonString));
}catch (e){
try{
var data = (new Function("return " + jsonString))();
callback(data);
}catch(e2){
("baoAjax解析数据异常!"+url);
}
}
}else{
if($.isFunction(failCallback)){
failCallback();
}
}
}
});
}