Ajax callback works only once
Ok, I have solved the issue and this might help someone in future. I was dealing with a form which was actually a collection of various small forms. Each small form had various text fields and submit handler. So, when reloading a small form using AJAX I was setting $form_state['rebuild'] = true, this in process rebuilt the whole form in the back. But AJAX callback only rendered a small part of form into the wrapper. So, when I pressed the button again there was post error as Drupal was expecting values in new rendered form whereas it got a mixture of Old and new form. 
    It happens because Drupal while rendering a form into HTML adds id to it, e.g., id = edit-save but when we rebuild it without reloading the page, it changes to something like id = edit-save--2 and which keeps on to increment every time it's rebuilt. 
    So, if your form needs rebuilding, reload the whole form else set $form_state['rebuild'] = false and that should allow subsequent AJAX calls without any post error.