AJAX的dataType问题

    xiaoxiao2025-08-21  11


    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": 返回纯文本字符串

    以上是从W3cSchool上copy过来的,但是我在编码时遇到了一个问题: 1、Controller代码:

    /** *菜单保存方法 */ @RequestMapping(value = "save", method = RequestMethod.POST) public @ResponseBody String createMenu(MenuBean menuBean, @RequestParam(value = "imgUpload") MultipartFile uploadFile, HttpServletRequest request) throws IOException, BizException { String contextPath = request.getSession().getServletContext().getRealPath(Constants.UPLOAD_PATH); //返回主键 return sysMenuService.saveMenu(menuBean, uploadFile, contextPath); }

    在这段代码中,如果保存成功就返回:

    "[{\"retVal\":\"success\"}]"

    保存失败就返回:

    "[{\"retVal\":\"fail\"}]"

    前台ajax代码

    $.ajax({ url: urlPath, type: "POST", data: postParam, dataType: "JSON", error: function (data) { $.Popup.error("表单数据不合法!"); }, success: function (data) { ...... } });

    当我debugger时,发现typeof(data)返回的是string而不是object,为什么呢?经过调查发现是因为dataType不应该是“JSON”而是“json”,将大写改成小写后,返回的data的类型就是object类型了。

    转载请注明原文地址: https://ju.6miu.com/read-1301900.html
    最新回复(0)