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.
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo