2011-08-03 6 views
0

ici eu une situation bizarre .....fonction ajax et async: false

i ont une fonction qui ne peut pas modifier (pour une raison et je dois l'utiliser au lieu de créer un nouveau 1 ou écraser. le script n'est pas autorisé ...)

function update_tpl2(form, divtoupdate, exeAlert) { 
if(!$('#'+form).length) 
    form = 'myform'; 
if(!$('#'+divtoupdate).length) 
    divtoupdate = 'ajax_update'; 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: $('#' + form).serialize(), 
    dataType: "html", 
    beforeSend: ShowLoading, 
    success: function(resp){ 
     $('#theLoading').dialog('close'); 
     $('#loading').html('');   
     $('#' + divtoupdate).html(resp); 
    } 
}); 

}

et je dois ajouter async: false dans cette fonction lors de son exécution. est-il un moyen de régler l'ajax à async: false, en ne changeant pas la fonction et en l'utilisant .....

Répondre

0

Quelque chose comme ça peut-être?

simplement appeler la fonction suivante avec des propriétés = {async: false}

function update_tpl2(form, divtoupdate, exeAlert, properties) { 
if(!$('#'+form).length) 
    form = 'myform'; 
if(!$('#'+divtoupdate).length) 
    divtoupdate = 'ajax_update'; 

var defaultProps = { 
    type: "POST", 
    url: url, 
    data: $('#' + form).serialize(), 
    dataType: "html", 
    beforeSend: ShowLoading, 
    success: function(resp){ 
     $('#theLoading').dialog('close'); 
     $('#loading').html('');   
     $('#' + divtoupdate).html(resp); 
    } 
} 

jQuery.extend(true, defaultProps, properties) 

$.ajax(defaultProps); 
+0

mais u changer la fonction update_tpl2 dy. cela ne devrait pas être ^^ mais merci d'essayer – Leon

+0

oui, vous changez le contenu de celui-ci, mais la logique devrait rester la même. De cette façon, vous pouvez changer le comportement en utilisant l'argument d'entrée des propriétés. Si c'est vraiment impossible, alors il peut y avoir un autre moyen. mais c'est une solution horrible! vous pourriez faire quelque chose comme définir 'jQuery.ajaxSetup ({async: false}); update_tpl2 (.....); jQuery.ajaxSetup ({async: true}) '. qui définirait d'abord async: false comme valeur par défaut, puis appelez votre fonction, puis réinitialisez async: true à la fin. plus à ce sujet ici: http://api.jquery.com/jQuery.ajaxSetup – netbrain

Questions connexes