
Originariamente inviata da
KillerWorm
Ciao, le indicazioni che hai fornito sono imprecise e poco dettagliate; il problema può dipendere da vari fattori. Non vedendo l'esatto script e il contesto in cui adoperi questa roba è difficile darti dei suggerimenti mirati.
Intanto noto un errore: hai usato class="contenitore" sul codice html, mentre nel selettore jQuery lo hai indicato come un id (#contenitore). Posso pensare che sia giusto un tuo errore di trascrizione qui sul forum, dal momento che il primo script ti funziona come hai indicato, ma capisci che più impreciso sei nelle tue richieste, meno aiuto ti potrai aspettare.
Provo a spararla: se per caso hai impostato la proprietà datatype, sull'oggetto AJAX, verifica che abbia valore "text", altri valori potrebbero generare degli errori nella ricezione dei dati.
Se non fosse questo, posta il resto del codice in esame (facendo attenzione a riportarlo in modo corretto sul forum) oppure, meglio, posta un link alla pagina pubblica dove è possibile esaminare il problema.
OK per la confusione class/id derivante, come hai ben detto, dal trascrivere qui sul forum essendo esattamente così
codice HTML:
<div id=contenitore>
<div>
<img src... />
<div class="azione"></div>
</div>
<div>
<img src... />
<div class="azione"></div>
</div>
...
<div>
<img src... />
<div class="azione"></div>
</div>
</div>
Il meccanismo è questo.
-il div "interno", con class=azione inizialmente è nascosto e videne reso visibile, e copre per intero il div "genitore", e quindi l'immagine.
- al clic su questo, adesso visibile ed in primo piano, parte l'azione, che come detto funziona senza la chiamata ajax, mentre se uso la chiamata asincrona, mentre vengono eseguite le azioni lato server, lato client, l'elemento non viene eliminato e rimane visibile.
Per il resto non capisco come potrebbe influenzare la url richiamata, i parametri passati e il method impostato (solo questi sono i parametri impostati).
Infatti oltre al fatto che se al posto della chiamata ajax, come detto, faccio
codice:
$('#contenitore div').click(function(){
var elem = $(this).parent();
elem.remove();
});
funziona e il div viene elimiminato.
Inoltre se faccio
codice:
$('#contenitore div').click(function(){
var elem = $(this).parent();
$.ajax({
[...]
success: function(data) {
if(data == 'OK') {
alert('messaggio');
}
});
funziona, e appare il messaggio in alert, quindi anche la risposta viene correttamente rilevata.
se invece voglio eliminare l'intero div non accade nulla.
Perchè senza la chiamata ajax funziona e dentro no?
PS. Le pagine non sono ancora online.