天天看點

從Ext.util.JSON.decode(msg) 報錯說起: extjs missing ] after element list

一、問題的産生:

        前端技藝不精導緻各種照貓畫虎,但照貓畫虎的前提也應該是 二者都屬于貓科動物,否則問題就出現了。

        God,我不應該 “自認為” Ext.Ajax.request({})和$.ajax({})的success函數用法相同的。

       下次,我要記住,不能醬紫寫了:

Ext.Ajax.request({
    url : basePath + "/loadData.action",
    method : 'POST',
    params : {...},
    success : function(<span style="color:#FF0000;">msg</span>) {
        <span style="color:#FF0000;">var msg = Ext.util.JSON.decode(msg);</span>  <span style="color:#FF0000;">//反面教材!!,firefox報錯:extjs missing ] after element list</span>
        ...
    }

}); 
           

二、問題的解決:

       下面給出Ext.Ajax.request({})中success函數的正确用法,并和$.ajax({})的success函數進行對比記憶。

       (1)Ext.Ajax.request({}):

Ext.Ajax.request({
    url : basePath + "/loadData.action",
    method : 'POST',
    params : {...},    
    <strong>//背景傳回前端了一個名為msg的對象,但貌似不展現msg的名字,msg的值被放在了response對象的屬性responseText中</strong>
    success : function(<strong>response</strong>)<strong> </strong>{
        <strong>var msg = Ext.util.JSON.decode(response.responseText);  //正确版本</strong>
        ...
    }.
    failure : function() {
        ...
    }
 }); 
           

       (2)$.ajax({}):

$.ajax({
    url : basePath + "/loadData.action",
    type : 'POST',
    data : {...},
    <strong>//背景傳回前端了一個名為msg的對象,前台通過對象名稱對接、擷取
</strong>    success : function(<strong>msg</strong>) {
        <strong>var msg = Ext.util.JSON.decode(msg);   //ok</strong>
        ......
    },
    error : function() {
    ......
    }
});