Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199

    [AJAX] Consentire l'onclick solo se AJAX ha completato la chiamata

    Ciao a tutti!!!
    Come da titolo vi chiedo se è possibile abilitare l'evento onclick solo se AJAX ha terminato la chiamata.
    Nel mio caso ho un link con il quale apro una finestra (Jquery) in cui posso scegliere i colori del prodotto. In base alla scelta del primo colore apro un'altra finestra con un secondo colore abbinato. Inoltre, con onmouseover sul link, sempre con Jquery, mi appare una finestra che segue il mouse dove appaiono in anteprima tutti i colori disponibili per quel prodotto, così che il cliente possa vederli prima di andarli a scegliere.
    Il problema nasce dal fatto che: se i colori dell'anteprima non sono stati caricati tutti (sono pur sempre immagini) e si clicca sul link, la funzione AJAX che mi va a chiamare il secondo colore abbinato al primo appena scelto, non funziona.
    Nella funzione: xmlhhtp.open, impostando il valore dell'asincronia, su TRUE il problema era notevolmente marcato (ovvero mi si bloccava del tutto), avendolo impostato su FALSE va molto meglio, ma ogni tanto ancora rallenta.
    Quindi, in conclusione, chiedo se c'è una funzione (non chiedo ila formuletta scritta, solo, magari, un nome tipo jQuery.ajax(), che posso poi andare a cercare in giro ed approfondirlo) che mi permetta di poter accedere alla mia finestra solo se l'anteprima ha terminato di caricare i colori.

    Grazie in anticipo a tutti coloro che vorranno darmi una mano!!!

    CIAOOOO

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Forse l'hai già vista http://api.jquery.com/jQuery.ajax/
    codice:
    var jqxhr = $.ajax( "example.php" )  .done(function() {    alert( "success" );  })  .fail(function() {    alert( "error" );  })  .always(function() {    alert( "complete" );  });
    e sempre che abbia capito cosa devi fare
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Grazie Andrea per avermi risposto.

    questo è il codice della funzione:
    codice:
    onclick="showEspoFin_1('<?php echo $prd_id?>', '<?php echo $prd_tab_1?>', '<?php echo $prd_mark?>','<?php echo $fin_type?>','<?php echo $prd_lnfn?>','<?php echo $_GET['line']?>','<?php echo $_GET['stln']?>','<?php echo $_GET['tab']?>', <?php echo $price_1_disc ?>, '<?php echo $price_type ?>');"
    COn la funzione ajaxStop dovrei riuscire a fare quello che voglio, però chiedo conferma se messo così possa andar bene:

    codice:
    onclick="$(document).ajaxStop(function(){showEspoFin_1('<?php echo $prd_id?>', '<?php echo $prd_tab_1?>', '<?php echo $prd_mark?>','<?php echo $fin_type?>','<?php echo $prd_lnfn?>','<?php echo $_GET['line']?>','<?php echo $_GET['stln']?>','<?php echo $_GET['tab']?>', <?php echo $price_1_disc ?>, '<?php echo $price_type ?>')});"
    Che ne dite???

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Che al massimo non va bene per quello che vuoi fare
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Infatti non ha funzionato...vabbè...non è un enorme problema, magri un giorno, quando sarò più bravino, lo risolverò!!!
    Grazie lo stesso. Ciao

    PS: comunque, giusto per scrupolo, come potrei modificare questo script inserendo ajaxStop???

    codice:
    <script type="text/javascript">
    $(document).ready(function() {
    	$(document).on("click", "#open_fin_window_1_<?php echo $prd_id?>", function()	{	$('.fin_window_1_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", "#open_fin_window_2_<?php echo $prd_id?>", function()	{	$('.fin_window_2_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", "#open_fin_window_3_<?php echo $prd_id?>", function()	{	$('.fin_window_3_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", "#open_fin_window_4_<?php echo $prd_id?>", function()	{	$('.fin_window_4_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", "#open_fin_window_5_<?php echo $prd_id?>", function()	{	$('.fin_window_5_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", "#open_fin_window_6_<?php echo $prd_id?>", function()	{	$('.fin_window_6_<?php echo $prd_id?>').fadeIn('fast');		});
    	$(document).on("click", ".open_fin_window", function()	{	$('#overlay').fadeIn('fast');	});
    });     
    </script>
    Ho provato a sostituirlo al ready, ma (forse OVVIAMENTE) non va.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non capendo cosa devi fare non saprei cosa consigliarti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Scusa ma ajaxstop si usa per chiamate ajax ma li non ne vedo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Per quel che ho capito io (il che lascia molto margine agli errori) si usa affinchè una certa funzione venga attivata nel momento che tutte le attività AJAX terminino il loro processo. Per cui non è lì che deve apparire la chiamata AJAX...credo!!!
    Quell'ultima porzione di codice che ho scritto sono, in riferimento al primo post, i link sui quali, con il onmouseover, appare l'anteprima dei colori. Per cui il senso (se ho ben interpretato ajaxstop) sarebbe quello che, una volta caricati tutti i colori dell'anteprima, mi permetta di aprire la finestra della scelta dei colori e degli abbinamenti tramite questo script.
    Credo che come logica non sia sbagliata, ma forse sto sbagliando l'interpretazione di questa funzione o come applicarla in questo caso.

    Grazie a tutti per l'interessamento comunque!!!!

    PS: la chiamata AJAX sta nel onmouseover di quei link. Il problema sta proprio che, mentre quella chiamata è attiva (quindi sta ancora caricando i colori dell'anteprima) non mi permette di svolgere altre chiamate AJAX (ovvero la scelta successiva dei colori e degli abbinamenti).

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A parte il fatto che t'ho perso alla terza riga, e avrai le tue buone ragioni per svilupparlo cosi. Io comunque svilupperei le chiamate ajax a cascata lancio la prima dove ci sarà il comando per richiamare la seconda chiamata ajax etc...
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Grazie del suggerimento, ma per com'è strutturato il sistema non credo che possa fare una cosa del genere.

    Grazie e buona serata!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.