1 votes

Jquery- Modifier la valeur de l'élément après l'appel ajax

entrer

scénario : Je veux faire un appel ajax pour mettre à jour l'image affichée. Exemple : cliquez pour activer, cliquez à nouveau pour désactiver.

Maintenant, l'image peut changer correctement lors du premier clic.

Après cela, si je clique à nouveau sur l'image, les changements ne seront plus reflétés.

Raison, le statut onclick est toujours= oui Comment puis-je accéder à l'élément de lien hypertexte pour réécrire la partie onclick en onclick="update('7','no') à RÉFÉRER ICI?

function update(pk,enable)
{

    $.ajax({

    url: "ajaxcall.asp",

    type: "POST",                       

    success:  function(output) {

        var status= output
        if(status==1){             
          var src = ( $('#'+'img'+pk).attr("src") == "img/cross.gif")? "img/tick.gif": "img/cross.gif";
          $('#'+'img'+pk).attr("src", src);    

    //RÉFÉRER ICI

        }

    },

    complete: function(){ },

    data: 'pk='+pk+'&enable='+enable

    });         
}

ici

1voto

La solution facile :

Remplacez ceci :

$('#'+'img'+pk).attr("src", src);

avec ceci :

$('#'+'img'+pk).attr("src", src).parent('a').attr('onClick','update("7","no")').

La bonne façon :

Ce Javascript devrait être non intrusive. Si c'était le cas, vous pourriez utiliser le système de liaison d'événements de jQuery pour exécuter l'événement une fois, puis le détacher.

1voto

cletus Points 276888

Je le ferais de cette façon. Tout d'abord :

puis

$(function() {
  $("#a7").update("7");
});

function update(pk) {
  var img = $("#img" + pk);
  if (img.attr("src") == "img/cross.gif") {
    enable = "non";
    var src = "img/cross.gif";
  } else {
    enable = "oui";
    var src = "img/tick.gif";
  }
  $.ajax({
    url: "ajaxcall.asp",
    type: "POST",                       
    success:  function(output) {
      var status = output;
      if (status == 1) {
        img.attr("src", src);
      }
    },
    complete: function(){ },
    data: 'pk='+pk+'&enable='+enable
  });         
}

Vous n'avez pas besoin de passer oui ou non. Vous pouvez le déduire de la source de l'image.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X