Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!