Unrecognized token 'ename': was expecting ('true', 'false' or 'null')(ajax中data動態獲取數據)

轉載自:http://blog.csdn.net/javaee_sunny/article/details/52576710

1.報錯現象:

頁面報錯截圖: 
頁面報錯截圖 
後臺報錯截圖: 
後臺報錯截圖

2.源代碼:

jsp代碼:

    $.ajax({ 
              type:"POST", 
              url:"${pageContext.request.contextPath }/empController/test", 
              contentType:"application/json;charset=utf-8",  //發送信息至服務器時內容編碼類型。             

              data:{'ename':$('#ename').val()},
              dataType:'json',  
              success:function(data){ 
                        alert("保存....");
                      },
              error:function(data) { 
                        alert("失敗...");
                    } 
          }); 

Controller代碼:

    @ResponseBody
    @RequestMapping("/test")
    public Emp testjsp(@RequestBody Emp emp){
        System.out.println(emp.getEname()+"***************");
        return emp;
    }

3.問題分析:

返回數據格式不規範.當dataType指定爲json後,1.4+以上的jquery版本對json格式要求更加嚴格.如果不是嚴格的json格式,就不能正常執行success回調函數.

JSON格式總結下,詳細的去json.org 查看。    
1)鍵名稱:用雙引號 括起    
2)字符串:用使用雙引號 括起 
3)數字,布爾類型不需要 使用雙引號 括起

4.解決方案:

按照上方嚴格的json格式,將動態獲取的data參數修改爲如下格式,即可:

data:"{\"ename\":\""+$("#ename").val()+"\"}",

不是動態獲取數據時,格式如下:(注意比較區別)

data:'{"ename":"tom"}',

5.參考文章:

[1] ajax不執行success回調而是執行error回調

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章