I noticed almost all Zii widgets with this way to handle Ajax requests: render the view with new data and send it as response. This includes all the markup and styles in addition to the returned data. Why not just return the JSON result as response and build the markup using jQuery? Because look & feel is not going to change with every Ajax request and there’s no need to build the Interface at servers-side which is costly. In core PHP, I used to do like this.
…and how to achieve this without forcing users to provide two actions: one rendering default view and one to provide AJAX data? Current solution works in-place, meaning you can just paste widget on any view connected to any action (and any logic behind that action: fetching object, preparing criteria, dataprovider, etc) and it will work just fine.