ajax一直返回 error

刚才在用的 springmvc + ajax 实现点赞功能不刷新更新数据的时候,ajax 返回一直是 error。

经过百度后,发现原因是 dataType 和实际返回值类型不一致

String dataType
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串

 

本例代码如下

article.jsp 代码

  1. <script type="text/javascript">
  2.     function like() {
  3.         document.cookie="articleId=${articleCustom.articleId};path=/";
  4.         $.ajax({
  5.             async: false,
  6.             type:"POST",
  7.             url:"${pageContext.request.contextPath}/like",
  8.             data: {count:${articleCustom.articleLikeCount}},
  9.             dataType:"text",
  10.             success:function (data) {
  11.                 $(".count").html(data);
  12.                // alert("点赞成功");
  13.             },
  14.             error:function()
  15.             {
  16.                 alert("获取数据出错!");
  17.             },
  18.         });
  19.      }
  20. </script>
  21.  <a href="javascript:;"onclick="like()">
  22.      <i class="fa fa-thumbs-up"></i>
  23.      <i class="count">${articleCustom.articleLikeCount}</i>
  24.  </a>

控制器代码如下(忽略可重复点击)

  1. //点赞
  2. @RequestMapping(value = "/like",method = {RequestMethod.POST})
  3. @ResponseBody  
  4.     public Integer testCookie(@CookieValue(value="articleId",required=false) Integer articleId) throws Exception {
  5.     System.out.println(articleId+","+age);
  6.         ArticleCustom articleCustom = articleService.getArticleById(articleId);
  7.         int articleCount = articleCustom.getArticleLikeCount();
  8.         articleCustom.setArticleLikeCount(articleCount + 1);
  9.         articleService.updateArticle(articleId, articleCustom);
  10.         return articleCount+1;
  11. }

注意:这里要一定加 @ResponseBody  ,如果返回字符串,会认为是路径,而不是值。

 

 

 

本文链接:https://liuyanzhao.com/6169.html

  • 微信
  • 赶快加我聊天吧
  • weinxin
  • 博客交流群
  • 海纳百川,大家来水
  • weinxin
言曌

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: