The problem I see with Javascript is headache of making it work with all browsers/future browsers. Even in a single browser world, things like popup blockers and other ad blocking can wreck havok on javascript.

It also is all client side, meaning you trust the clients not to tamper with the code to do some weird things. Is the server side trusting what comes back 100%? It shouldn't. With all the effort of maintaining javascript and checks, you have now lost most of the benefit of trying to be client side.