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

139
Visualizações
Cómo devolver la llamada `esto` dentro de la función ajax

Así que quiero usar this desde una función externa dentro de una función de éxito de ajax. Traté de aplicar estas soluciones, pero de alguna manera no puedo hacer que funcione.

 // Submit vote on submit $('.vote-choice-div').on('click', function(event){ event.preventDefault(); // bind the clicked object this.submit_vote.bind(this); // so I have to bind the element to use it in the ajax function? // fire ajax submit_vote(this.id, this); });
 // AJAX for posting function submit_vote(vote) { $.ajax({ url : "submit-vote/", headers: {'X-CSRFToken': csrftoken}, type : "POST", data : { vote : vote }, success : function(data) { if(data.status === 1){ console.log(this) // can't access the initial clicked element }

TypeError no capturado: no se pueden leer las propiedades de undefined (leyendo 'bind')

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

0

Tienes dos problemas (y un argumento sin sentido).

  1. submit_vote es global, no una propiedad del elemento. Para acceder a él, no usas this .
  2. bind devuelve una nueva función. No muta el existente.
  3. submit_vote solo acepta un argumento

Asi que:

 const localSubmitVote = submit_vote.bind(this) localSubmitVote(this.id);

Sin embargo ... bind solo es útil si va a almacenar una función para poder pasarla o usarla varias veces.

No estás haciendo eso, solo lo estás llamando una vez, así que usa call

 submit_vote.call(this, this.id);

Sin embargo ... submit_vote no es un método. No es sensato diseñarlo para usar this en primer lugar. Entonces, el mejor enfoque aquí es rediseñarlo para usar solo el segundo argumento que estaba pasando antes.

 function submit_vote(vote, element) { $.ajax({ // ... success: function(data) { if (data.status === 1) { console.log(element); } } }); }

y

 submit_vote(this.id, this)
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