最近在做异步请求的时候,发现一个头疼的问题,jQuery的ajax返回数据时,走的是error函数,而不是success函数。上网查了一些资料,原来是jQuery的版本问题。
function refreshMoney(){
//显示账户余额 异步加载账户余额
$.ajax({
type : "get",
url : "${basePath}csService/rest/userinfo/queryMoney",
data : {
mobile : '${mobile}'
},
dataType : "json",
success : function(data) {
data = data['responseText'];
var array = data.split(",", 2);
/* $("#accountMoney",parent.document).text(data); */
parent.document.getElementById("accountMoney").innerHTML=array[0];
},
error : function(data) {
data = data['responseText'];
var array = data.split(",", 2);
/* $("#accountMoney",parent.document).text(data); */
parent.document.getElementById("accountMoney").innerHTML=array[0];
}
});
解释一下程序:我在后台返回数据时,如果只是一个值或者几个值,我更喜欢直接用‘,’拼接字符串的方式返回值,在客户端用split()函数将返回值分开,这样更简单一点,不必再用jsonArray转换,但是在ajax中设置的返回类型还是json,这样的话,服务器还是会传一个json格式的字符串,我传回来的字符串实际是保存在responseText这个key中,所以data[‘responseText’]才是我真正要得到的字符串,然后split这儿值。
言归正传:在1.3版本的jQuery以后,严格要求了json格式,如果返回的值不是json格式,他就会执行error函数。所以如果想让他走success函数的话,还是在后台把数据格式化成json格式吧。