2013-03-16 14 views
7

Ho una chiamata ajax che richiede dati da un metodo CFC Coldfusion e visualizza i dati in un div. C'è anche un link per cancellare questi dati che usano lo stesso CFC ma un metodo diverso da eliminare. Entrambi i metodi funzionano indipendentemente bene. Quello che non riesco a capire è come incapsulare la chiamata in una funzione e aggiornare il div dopo che la cancellazione ha avuto successo. Ecco il codice:Cancella e ricarica div con dati tramite AJAX e jQuery

ajax chiamata

var caseid = <cfoutput>'#URL.ID#'</cfoutput>; 
    var siteurl = <cfoutput>'#APPLICATION.url#'</cfoutput>; 
    var html = ""; 

    function assetsPost() { 
    $.ajax({ 
      cache: false, 
      type:'GET', 
      url:'cfc/cfc_Asset.cfc?method=qAsset&returnformat=json', 
      dataType: "json", 
      data: { 
       assetgrp_id: caseid, 
      }, 
      success:function(data) { 
      if(data) { // DO SOMETHING 
      jQuery.each(data, function(i, val) {  
       $('#picoutputannotation').html(data[i].annotation); 
       var asset_id = data[i].value; 
       var img  = siteurl + 'assets/images/thumbs_check2/' + data[i].thumb; 
       var removeimg = siteurl + 'assets/images/remove.png'; 
       var annotation = data[i].annotation; 
        html += "<div class='block-pics'>"; 
        html += "<img src='" + img + "'>"; 
        html += "<div class='note'>"; 
        html += annotation; 
        html += "</div>"; 
        html += "<div class='block-pics-remove'>"; 
        html += "<a class='delete-asset' id='" + asset_id + "'><img src='" + removeimg + "'></a>"; 
        html += "</div>"; 
        html += "<div class='bot'></div>"; 
        html += "</div>"; 
      }); 
       $('#picoutput').html(html); 
      } else { // DO SOMETHING 
      } 
     } 
    }); 
} 
assetsPost(); 

Ecco lo script eliminazione:

$(document).on("click", ".delete-asset", function() { 
    var del_id = $(this).attr('id'); 
    $.ajax({ 
     type:'GET', 
     url:'cfc/cfc_Asset.cfc?method=DeleteAsset&returnformat=json', 
     dataType: "json", 
     data: { 
      delete_id: del_id, 
     }, 
     success:function(data) { 
     if(data) { // DO SOMETHING 
      $('#picoutput').empty(); 
      {assetsPost()}; 
      $('#picoutput').fadeIn('fast'); 

     } else { // DO SOMETHING 
     } 
    } 
    }); 
}); 

qui è il codice HTML:

<div class="grid_6"> 
       <div id="picoutput"></div> 
      </div> 
    </div> 
+0

Forniresti un esempio live come in [plunker] (http://plnkr.co/edit/?p=preview), potresti sostituire la chiamata al server con un file json con dati fittizi. –

+0

Cosa restituisce la funzione DeleteAsset() nel tuo cfc? –

+0

Ehi Dan, ho appena ricevuto una risposta vuota. es .: "[]" –

risposta

2

Basta impostare lo html su vuoto assegnando una stringa vuota.

success:function(data) 
{ 
    $('#picoutput').html(""); 
} 
+0

Grazie Raheel. In realtà ho provato questo.Quello che succede è che non cancella la risorsa (immagine) e semplicemente riposa i dati al di sotto della risorsa che si suppone di essere cancellati. Se aggiorno la pagina, la risorsa che si intendeva eliminare non esiste più. –

+1

potrebbe eseguire il codice in un ordine imprevisto? Hai un esempio? – turiyag

-1

È possibile indirizzare l'attività (foto) forse dargli una classe e poi rimuoverlo dal DOM in questo modo:

success:function(data) { 
    $('.assets-picture').remove(); 
} 

Spero che questo aiuto.

0

Ecco i passaggi di risoluzione dei problemi avrei preso:

  1. nella tua sezione di eliminazione sostituire $('#picoutput').html(""); con $('#picoutput').empty();
  2. come commento {//assetsPost()}; nello script di eliminazione. Verificare che il contenuto si stia eliminando correttamente
  3. Ripristina la riga commentata. Inserire un avviso qui (o un punto di interruzione se è possibile).
function assetsPost() { 
    alert("Assets Post"); 
    $.ajax({ 
    }); 
} 

Verifica Questa funzione è solo essere chiamato una sola volta.

  • Inserire un avviso (breakpoint) qui, in fondo alla quale si aggiunge il codice html
alert(html) 
$('#picoutput').html(html); 

Verificare che il codice HTML viene restituito dalla chiamata CFC contiene quello che pensi lo fa.

+0

Grazie Mike per il tuo commento. Quello che sta accadendo è: 1.Faccio clic su Elimina. 2. Il contenuto viene eliminato ma non scompare dallo schermo. 3. La chiamata ajax recupera il contenuto rimanente e lo aggiunge sotto il contenuto esistente incluso ciò che dovrebbe essere eliminato. Ciò che viene ripopolato sono solo i dati che non sono stati cancellati. Quando aggiorno la pagina il contenuto cancellato è sparito. –

+0

Il codice che mi stai chiedendo di aggiungere è già all'interno del successo dello script di cancellazione. Vuoi che lo aggiunga allo script che chiama inizialmente i dati? –

+0

In realtà, vedi la mia modifica. Quando ripasso il tuo script di nuovo, mi sono imbattuto in alcuni problemi di cui sono confuso. –