I was having the same issue, and I found out what was wrong. I had the HTML defined as
<form action="url" method="post">
<input type="hidden" id="email" />
<form>
<script>
function onsomeevent()
{
$("#email").val("[email protected]");
}
</script>
Reading the form values on server always resulted in email as empty. After scratching my head (and numerous search), I realized the mistake was not defining the form/input correctly. On modifing the input (as shown next), it worked like a charm
<input type="hidden" id="email" name="email" />
Adding to this thread in case others have the same issue.