开发者

Why is my content being overwritten instead of replaced in jQuery/Ajax?

开发者 https://www.devze.com 2022-12-26 23:17 出处:网络
I\'ve got jquery being used in ajax to pass some contents into a database, my problem however has nothing to do with the db..

I've got jquery being used in ajax to pass some contents into a database, my problem however has nothing to do with the db..

I have input fields in an id called

#clientscontainer
. When I click "save" in that container, it automatically refreshes the container correctly ...
 $('#clientscontainer').html(html);

The problem is, a couple of those input fields (such as a description and title), have instances in another div that i want to refresh upon the save click. The other ID is:

 $('div#' + clientID')

When I do

$('div#' + clientID').html(html); 
it refreshes the content from clientscontainer in it instead of just the variables that I want to update.

When I try to pass just the variable

$(blurb).html(html); 
it updates the blurb but it ONLY displays that variable in the div# clientID div... whereas I just want to replace it.

Here is the AJAX portion of the function

...//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()});
        //$('#cl开发者_开发百科ientscontainer').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');
                          }
    });

any suggestions?


You could produce a jquery object with a DOM for the data being passed back in the callback

$(html) 

Then target the two inputs outside the main container and use .replaceWith() to replace the entire element

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


This is just a suggestion, but $('div#' + clientID').html(html); might cause some problems.

Try replacing it with

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号