我返回的JsonString为{success:false},但是Ext还是去执行success的函数。代码如下:
     Ext.Ajax.request({
            url:projectPath+'warning/operateWarnList.action',
            params:{digest: digest,timeStr: time},
            asynchronous:false,
            method:'post',
            success:function(response){
Ext.MessageBox.alert('show','处理成功!');
        },
        failure : function(response){
        Ext.MessageBox.alert('show','处理失败!');
        }
        });

解决方案 »

  1.   

    这个success:false不是指你的ajax请求失败了
    所以你必须改成这样
    success:function(response) {
       //在这里判断response中的success是false还是 true。然后做不同的处理
    }
      

  2.   

    Yes 
    Ext里的ajax提交数据和form提交数据返回的success意义是不同滴
    form提交数据的success判断可以像你写的那样
    ajax判断success,服务端必须返回一个字段用于标识该处理是否成功 
    failure : function(response){
        Ext.MessageBox.alert('show','处理失败!');
    }只是说明ajax请求失败返回 的http code不是200,可能是404 500 403 401 等 等 。才是failure
      

  3.   

    {success:false,......}
    这样了肯定不执行success了
    每次返回总是成功当然执行了.
      

  4.   

    那怎样获得response中的success的值呢?response.success?肯定不是这样,刚才试过了,不行
      

  5.   

    EXT自己会根据success的值来确定是调用success还是fail的回调函数.
    只要写好服务器端代码就OK了.
      

  6.   

    Ext.Ajax.request({
                url: url,
                method: 'post',
                callback: function(options, success, response) {
                    if (success) {
                        var json = Ext.decode(response.responseText);
                        if (json.Success) {
                            //成功
                        } else {
                            //失败
                        }
                    } else {
                        //连接失败
                    }
                },
                scope: this,
                params: para
            });