Major PRO, unlike compiled code this are easy to access and change without recompiling and sending to end users, which in turn makes bug fixing faster.
Major CON, more work is done in and on the server resources instead of distributed to the clients. Also, more business logic on the server means more trips across the network, especially if you do vaildation on the server side.
I usually do a combination of the two where I can. However, once I have nailed the business logic and smoothed out all the bugs I convert to client code and send a final client out.