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).