jQuery ajax一直调用error方法,问题解决
2017-04-20 17:32
393 查看
首先说原因,然后再说具体情况:
原因一:返回的json格式不对。
原因二:在返回数据之前不能有任何的输出,包括打开调试。例如:后端用的是php,像在返回json数据之前,echo,var_dump等输出是不能有的,debug也要关闭。
问题:在页面点赞,并执行了后端的代码,但是前端一直调用error方法
下面贴出代码来说明该问题
前端代码:
php端代码:
其中json_success() ,json_error()是两个封装好的返回给前端的json格式的字符串,但是在执行“点击喜欢”的时候,没有任何问题,当点击“取消喜欢”的时候,数据库的数据已修改,但是ajax一直调用error方法
原因分析: 前后端定义了数据的交互方式,前端默认后端返回的数据格式是一个json而且格式也是规定好的,现在在后端返回给前端数据时,echo或debug等都会导致前端接受不到定义好的json串,从而导致错误。
原因一:返回的json格式不对。
原因二:在返回数据之前不能有任何的输出,包括打开调试。例如:后端用的是php,像在返回json数据之前,echo,var_dump等输出是不能有的,debug也要关闭。
* 问题描述
实现功能:点赞功能问题:在页面点赞,并执行了后端的代码,但是前端一直调用error方法
下面贴出代码来说明该问题
前端代码:
$("#like").on("click",function(){ var like_status = $("#like-status").html(); var like_number = parseInt($("#like-num").html()); $.ajax({ url:"../usercenter/clickLike", type:"POST", data: {"like_status":like_status,"like_cnt":like_number,"vid":video_id,"uid":user_id}, dataType:"json", success:function(data){ alert(data.error_code) if(data.error_code == 0){ if(like_status == 0){ var num = Math.floor(Math.random() * 3 + 1); var index=$('.like').children('img').length; var rand = 20; $(".like").append("<img class='img-like1' src=''>"); $(".like").append("<img class='img-like2' src=''>"); $('.img-like1:eq(' + index + ')').attr('src','http://videostyle.qyer.ad/img/ic_feed_like_sel.png'); $('.img-like2:eq(' + index + ')').attr('src','http://videostyle.qyer.ad/img/ic_feed_like_sel.png'); $(".img-like1").animate({ bottom:"300px", opacity:"0", left: rand },2000); $(".img-like2").animate({ bottom:"400px", opacity:"0", left: rand },2000); $("#like").removeClass("like-no"); $("#like").addClass("like-yes"); $("#like-status").html(1); $("#like-num").html(like_number+1); }else{ $("#like").removeClass("like-yes"); $("#like").addClass("like-no"); $("#like-status").html(0); $("#like-num").html(like_number-1); $(".img-like1").remove(); $(".img-like2").remove(); } }else{ alert(data.error_code); } }, error:function(data){ alert("错误"); } }); }).on("touchstart", function(event) { event.stopPropagation(); });
php端代码:
/** * 用户点击喜欢,取消喜欢 */ public function clickLikeAction(){ $uid = getRequestInt("uid"); if(!$uid){ json_error(1,"请先登录"); } $vid = getRequestInt("vid"); $like_status = getRequestInt("like_status"); $like_cnt = getRequestInt("like_cnt"); if(!$vid){ json_error(1,"vid未得到"); } if(!$like_status ){//用户没有喜欢过才为其添加喜欢,并令喜欢量加1 Table_Video_Vlike::inst()->addUserLike($uid,$vid); Table_Video_Statistics::inst()->increaseLikeCnt($vid,$like_cnt); json_success(); } //取消喜欢,并令喜欢量减1 Table_Video_Vlike::inst()->deleteUserLike($uid,$vid); $res = Table_Video_Statistics::inst()->decreaseLikeCnt($vid,$like_cnt); if(!$res){ json_error(); } json_success(); }
其中json_success() ,json_error()是两个封装好的返回给前端的json格式的字符串,但是在执行“点击喜欢”的时候,没有任何问题,当点击“取消喜欢”的时候,数据库的数据已修改,但是ajax一直调用error方法
* 问题解决
网上资料说是json数据格式不对,但是调用的是同一个函数,怎么会json格式不对呢,面对上面的问题觉得很奇怪,后来发现我在decreaseLikeCnt() 这个方法中使用了 echo, 把这个注释掉问题就解决了。另外一种情况,我开启了数据库调试模式,也会出现ajax一直调用error方法。为什么注释掉就解决问题了呢?原因分析: 前后端定义了数据的交互方式,前端默认后端返回的数据格式是一个json而且格式也是规定好的,现在在后端返回给前端数据时,echo或debug等都会导致前端接受不到定义好的json串,从而导致错误。
相关文章推荐
- jquery ajax方法提交json格式数据报错,一直返回error问题-已解决
- jquery ajax方法提交json格式数据报错,一直返回error问题-已解决
- WEB上调用HttpWebRequest奇怪问题的解决方法
- JAVA+AXIS客户端调用Asp.net Web Service过程中遇到的问题及解决方法
- LoadRunner出现error问题及解决方法总结
- JSP、AJax中文乱码问题解决,escape(), encodeURI(), encodeURIComponent(),js对参数连续两次调用 encodeURI(String) 方法
- sql server 2008 error 233 问题解决方法
- JDBC连接SQLServer时出现错误Error establishing socket.的解决方法[端口问题引起]
- Linux启动时 Error 15: File not found 问题解决方法
- 在JRE1.4.2以上版本中解决Javascript调用已签名Applet方法时提示没有权限问题
- makeimg: FATAL ERROR: Out of buffer space 错误问题的解决方法
- 安装Visual Studio 6的"Error Lauching acmboot.exe"问题解决方法
- .NET CF调用eVC的动态库,Char* 传参问题解决方法。
- windows命令行下随时随地调用csc编译器的方法(解决dos下编译.net程序找不到CSC的问题)
- asp.net 用户控件 调用js问题解决方法
- CXX0017:Error:symbol "xxx" not found 问题解决方法
- openoffice不能调用SCIM的问题解决方法
- 遇到动态调用Parameters .AddWithValue()参数类型问题的解决方法
- 编译过程中弹出new(35) : error C2061: syntax error : identifier 'THIS_FILE'问题的原因及解决方法
- 在Tomcat上配置struts2环境时遇到 “Error filterstart” 问题的解决方法