views:

44

answers:

1

hi,

I am trying to modify my Javascript page, which uses Ext Js library.(I don't have any idea about ext js, haven't worked on it either)

What I want To do is that based on the JSON DATA particularly the field "successProperty", I want to decide whether to upload the grid or give an alert.

What I can possibly do is to add an event to the class. but i don't Know how to do it.

Can someone give me a nice example which can help me out in achieving what i need .

Thanks.

please let me know if I need to give any more details

thanks again..

A: 

The 'successProperty' is not what you think. That property is used internally by ExtJS to know how to find out if the method had an error. Its a string containing the "name" of the property inside the returned JSON which will tell the ExtJS framework that something went wrong, and not the error status itself. So, that is why ExtJS let you "define" that property. And as your server side will be defined by you, you can choose any name you like for your success status, and if you choose something different than success (which is the default successProperty) then you define it in the successProperty configuration property of the JsonReader.

And the easy way to detect if an error happened when you load a grid is checking the 3rd parameter (called success) of the callback in the load method:

store.load({
    params:{start:0, limit:15},
    callback: function(result, options, success) {
        if (!success) {
            alert('error!!');
        }
    }
});

There are more generic ways of handling server side errors, instead of defining a callback on every store.load you can use:

// Listen to "exception" event fired by all proxies
Ext.data.DataProxy.on('exception', function(proxy, type, action, ex) {
    alert('Error through DataProxy.exception at ' + type + '.'+ action);
});

Or if were already using Ext.Direct you could use its exception event (probably you are not using Ext.Direct, so don't expect it just work by itself):

Ext.Direct.on('exception', function(ex) { alert(ex.message); });

I put together a complete example with the first 2 ways of catching errors: http://jsfiddle.net/vZGvM/. The example has no errors but you can simulate an error by pointing the url of the ScriptTagProxy to any invalid url (it will take a time to respond if you do that, but you will see both alerts).

Protron