AJAXのdataType問題


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":         

以上はW 3 cSchoolからcopyで来ましたが、符号化時に1つの問題に遭遇しました: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)がobjectではなくstringを返していることに気づきました.なぜですか.調査の結果、dataTypeは「JSON」ではなく「json」であるべきで、大文字を小文字に変更した後、返されるdataのタイプがobjectタイプであることが分かった.