Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

182
Visualizações
¿Cómo puedo simplificar mis llamadas javascript y ajax?

Tengo un par de botones para una aplicación de demostración.

 <div style="margin-top: 10px;" class="text-center"> <h3>Events</h3> <button id="trackTrace" class="btn btn-warning">TrackTrace()</button> <button id="trackException" class="btn btn-warning">TrackException()</button> <button id="trackEvent" class="btn btn-warning">TrackEvent()</button> </div>

Ahora me gustaría emitir llamadas AJAX cuando se hace clic en uno de los botones. Resolví esto de la siguiente manera.

 <script> $("#trackTrace").click(function () { $.ajax({ url: "/api/event/trace", type: "GET", success: function (result, status, xhr) { $("#message").text("Success").show(); }, error: function (xhr, status, error) { $("#error").text("Error").show(); } }) }); ... </script>

Sin embargo, esto parece romper el principio SECO, no quiero repetir eso para cada botón. Claro que podría mover la visualización del texto a una función separada.

Sin embargo, las siguientes llamadas showError() y showSuccess() incluso si la llamada AJAX estuvo bien.

 function showSucess(result, status, xhr) { $("#message").text("Success").show(); }; function showError(xhr, status, error) { $("#error").text("Exception thrown on Backend-API!").show(); }; $("#trackTrace").click(function () { $.ajax({ url: "/api/event/trace", type: "GET", success: showSucess(), error: showError() }) });

Entonces, ¿cómo puedo simplificar mi código? Estoy buscando una forma similar a un switch que actúe sobre los clics del botón.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

  1. Los controladores de eventos no deben tener el () cuando se usan en una asignación success: showSuccess, - O tiene que devolver una función
  2. La delegación está integrada en JS y jQuery
 $("#eventContainer .track").on("click", function () { $.ajax({ url: "/api/event/" + this.dataset.url, type: "GET", success: showSucess, error: showError }) })
 <div id="eventContainer" style="margin-top: 10px;" class="text-center"> <h3>Events</h3> <button id="trackTrace" class="track btn btn-warning" data-url="tracktrace">TrackTrace()</button> <button id="trackException" class="track btn btn-warning" data-url="trackexception">TrackException()</button> <button id="trackEvent" class="track btn btn-warning" data-url="trackevent">TrackEvent()</button> </div>
about 4 years ago · Juan Pablo Isaza Relatório

0

HTML:

 <div style="margin-top: 10px;" class="text-center"> <h3>Events</h3> <button data-url="/api/event/trace" class="btn btn-warning">TrackTrace()</button> <button data-url="/api/event/exception" class="btn btn-warning">TrackException()</button> <button data-url="/api/event/event" class="btn btn-warning">TrackEvent()</button> </div>

JS:

 $("button[data-url]").each(function () { const clickedElement = this; $(this).click(function () { $.ajax({ url: clickedElement.dataset.url, type: "GET", success: function (result, status, xhr) { $("#message").text("Success").show(); }, error: function (xhr, status, error) { $("#error").text("Error").show(); } }) }); });

Tenga en cuenta que no necesita asignar una id a sus botones. Además, no estoy 100% seguro de que la sintaxis sea correcta ya que no he trabajado con jQuery por un tiempo

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda