Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, eu tenho um método em javascript (um botão). Clicando nesse botão, aciono o js e também um evento do asp.net. O evento do js gera um valor que mando pro asp. E o evento do asp usa o valor pra outro processo. Porém, parece que o evento asp está processando antes do JS, antes de poder pegar o valor gerado pelo JS (ficando fazio).
Alguém sabe como executar o JS primeiro? Ou se por acaso estou fazendo alguma bobagem?
Valeu!
@fabiocavalcante, o ambiente web funciona em camadas; no seu cenário podemos dizer que temos pelo menos duas camadas:
1. **Frontend** - onde está seu botão;
2. **Backend** - onde está o ASP.NET
Quando o usuário clica em seu botão, ele o faz no frontend e tudo o que você sincronamente no frontend, será executado antes do que é executado no backend. O que certamente está ocorrendo aí é que você está fazendo uma chamada assíncrona para sua aplicação ASP antes de pegar seu valor; basicamente, deveria estar:
-
função do controlador do clique do botão;
-
pega o valor que você precisa;
-
faz a requisição XHR para o backend com o valor do JS
-
o backend faz o que tem que fazer e retorna
-
o JS pega o retorno.
Pela descrição do seu problema, você está invertendo os passos 2 e 3. Faça a verificação aí no seu código e coloque os passos 2 e 3 na ordem correta que seu problema será resolvido.
O Js é assicrono:
http://pt.stackoverflow.com/questions/51268/qual-a-diferença-entre-comunicação-assíncrona-e-síncrona
Se a necessidad do JS se comunicar com o servidor sem o refresh da pagina, busque por Ajax,
http://www.w3schools.com/asp/asp_ajax_asp.asp
https://msdn.microsoft.com/pt-br/library/bb398874(v=vs.100).aspx.aspx)