As far as I know, salt can be public and must be different for each user to be effective. Using one salt per server reduces its effectiveness. Though I do not understand why would you need to publish it or have it on a client side: you just send the password and server uses salt to calculate a unique hash resistant to rainbow tables attack and then uses the same salt every time user log in. So you just store randomly generated salt along with password hash in the same DB record.
It is also the common practice to use RSA public and private keys + nonce if you want to encrypt the password while sending it between the server and client. If you'll use some hash salted on the client and don't use nonce, MITM could just reproduce your raw encrypted request to get authenticated. There is a lot of nuances why people use SSL instead of trying to invent their own cryptographic algorithms.