2010-04-16 4 views
1

J'ai jquery utilisé en ajax pour passer des contenus dans une base de données, mon problème n'a cependant rien à voir avec le db ..Pourquoi mon contenu est-il remplacé au lieu d'être remplacé dans jQuery/Ajax?

J'ai des champs d'entrée dans un id appelé

#clientscontainer
. Lorsque je clique sur "enregistrer" dans ce conteneur, il actualise automatiquement le conteneur correctement ...
 $('#clientscontainer').html(html);

Le problème est, un couple de ces champs de saisie (comme une description et un titre), ont des instances dans un autre div que je vouloir actualiser le clic de sauvegarde. L'autre ID est:

 $('div#' + clientID')

Lorsque je le fais

$('div#' + clientID').html(html);
il actualise le contenu de clientscontainer en elle au lieu de seulement les variables que je veux mettre à jour.

Lorsque je tente de passer juste la

$(blurb).html(html);
variable, il met à jour le texte de présentation, mais il affiche seulement cette variable dans la div # clientID div ... alors que je veux juste de le remplacer.

Voici la partie AJAX de la fonction

 
...//variables// 
    dataToLoad = 'clientID=' + clientID + '&changeClient=yes' + '&project=' + 
descriptionSubTitle + '&campaign=' + descriptionTitle + '&label=' + 
descriptionLabel + '&descriptionedit=' + description +  '&blurbedit=' + blurb; 

    $.ajax({ 
    type: 'post', 
    url: ('/clients/controller.php'), 
    datatype: 'html', 
    data: dataToLoad, 
    success: function(html){   
     dataToLoad = 'clientID=' + clientID + '&loadclient=yes&isCMS=' + editCMS; 
    $.ajax({ 
    type: 'post', 
    url: '/clients/controller.php', 
    datatype: 'html', 
    data: dataToLoad, 
    async: false, 
    success: function(html){ 

     //$('#clientscontainer').focus(function() {reInitialize()}); 
     //$('#clientscontainer').ajaxComplete(function(){reInitialize()}); 

     $('#clientscontainer').html(html); 
     $('div#' + clientID).each(function(){ 

     $('#editbutton').click(function() {EditEverything()}); 


     } 
      , 
    error: function() { 
    alert('An error occured! 222'); 
    } 
    });}, 
     error: function() { 
     alert('An error occured! 394'); 
          } 
    }); 

des suggestions?

Répondre

0

On peut produire un objet jquery avec un DOM pour les données étant transmis avant le rappel

$(html) 

cibler ensuite les deux entrées à l'extérieur du récipient principal et utiliser .replaceWith() pour remplacer l'élément entier

$("div#").replaceWith($(html).find("div#")); 
$("clientID").replaceWith($(html).find("clientID")); 
+0

Merci pour votre suggestion, je vais donner un coup de feu ce –

0

Ceci est juste une suggestion, mais $('div#' + clientID').html(html); pourrait causer quelques problèmes.

Essayez de le remplacer par

$('div#' + clientID').each(function(){ 
    $(this).html(variableOrArrayElement) 
}); 
Questions connexes