美文网首页
Ajax的dataType属性

Ajax的dataType属性

作者: 后补小将 | 来源:发表于2018-06-25 18:35 被阅读0次

    dataType:预期的服务器返回的数据类型

    出现的问题:当设置了dataType:"json"时,如果后端返回了String,则ajax无法执行。

    前端:

    $.ajax({

        dataType: "json",

        type:"post",

        url:"../delete",

        data: {

            "id": id

        },

        success:function(result) {

              console.log(result);

        },

        error:function(msg) {

            alert("加载数据出错!!!");

        }

    });

    后端:

    @RequestMapping(value ="/delete", method = RequestMethod.POST)

    @ResponseBody

    public String deleteApp(HttpServletRequest request) {

        logger.info("Delete info from table.");

        Long id= Long.parseLong(request.getParameter("id"));//获取id

        mamMapper.deleteApp(id);    //通过mybatis来删除数据

        return "success";    //返回一个数据,来刷新前端的列表,注意这里,返回了字符串

    }

    解释:后端直接返回了"success"字符串,而前端期望得到json格式的数据,例如:{"result" : "success"}。从而导致前端无法处理接收到的数据。

    解决办法:

    1.直接将dataType去掉即可,ajax会自动适配。

    2.将 dataType: "json" 改为 dataType: "text" 即可。

    Ajax参数的具体介绍如下:

    预期服务器返回的数据类型。如果不指定,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": 返回纯文本字符串

    相关文章

      网友评论

          本文标题:Ajax的dataType属性

          本文链接:https://www.haomeiwen.com/subject/jjtuyftx.html