jquery 1.4中ajax的dataType设置问题

今天遇到的一个ajax的dataType问题,请求成功时后台返回了一个字符串“true”,前台接收判断条件不成功。js代码如下:

function sendReplacePayUrl(){
	var friendMail = $('#friendMail').val();
	var leaveMessage = $('#leaveMessage').val();
	
	$.ajax( {
		type : "POST",
		url : basePath+"/**/**/****.sc",
		data : {
		"friendMail": friendMail,
		"leaveMessage": leaveMessage
	    },
		success : function(data) {
                  if(data=="true"){
                	  alert("邮件发送成功!");
                	  
                  }else{
                	  alert("邮件发送失败!");
                	 
                  }
		}
	});
}

跟踪结果后台返回了“true”后,js弹出的框一直是提示邮件发送失败!的信息,在前台JS中加入alert(data);弹出的结果确认是“true”,一直认为方法有问题,检查对比其他测试成功过方法,发现并没有错误。开始怀疑是data的接收类型有问题,百度了一下,说如果没有设置dataType,默认的类型就是text,接收字符串直接判断显示是没有问题,但奇怪我写的这个方法为什么不行呢?查看代码,在这步之前还有一个ajax的请求,js如下:

function friendPay(){
	var id = $('#combineId').val();
	var payurl = '获取地址失败';
	$.ajax( {
		type : "POST",
		url : basePath+"/**/**/****.sc",
		data : {
		"combineId": id
	    },
		dataType : "json",
		success : function(data) {
	         payurl =data.payUrl
                 //省略
                 ...
		}
	});
}

friendPay()函数执行后弹出框之后点击弹出框中的按钮执行sendReplacePayUrl(),猜想是不是因为之前执行friendPay()时设置了dataType:"json"的原因,导致之后执行sendReplacePayUrl()没有设置dataType,返回的数据类型默认之前设置的dataType:"json"。为了验证这点,把friendPay()中dataType:"json",去除,sendReplacePayUrl()不变,重新执行后,sendReplacePayUrl()接收data判断正常;之后再验证,将friendPay()中dataType:"json"再加上,在sendReplacePayUrl()中加上dataType:"text",重新执行后,sendReplacePayUrl()接收data判断正常。

通过上面的验证,个人得出的结论,jquery1.4中ajax的dataType如果没有设置,默认返回的data就是text类型,注意前提是,在这ajax之前上一步执行的ajax方法中datatype也必须是默认的或是设置为text,若上一步执行的ajax的dataType不是text,则之后想要返回的data与上一步不同的类型,则需要在方法中添加相应的dataType.

相关推荐