• User

    asp classico - Inserire articolo tra preferiti in database

    Ciao a tutti,
    ho un problema che non riesco a risolvere.

    Ho un database con una tabella articoli, una tabella utenti e una tabella preferiti.

    Nella pagina dell'articolo ho il link "aggiungi a preferiti" (se non è in tabella esce "aggiungi", se è presente esce "rimuovi")

    Il link rimanda ad una pagina asp che:
    controlla se nella tabella preferiti non sia presente un record con idArticolo e id Utente
    associa l'articolo all'utente

    Una cosa abbastanza banale e fin qui tutto ok.
    Ciò che non riesco a fare è evitare di caricare una pagina, al momento tramite popup, che esegue il codice e poi fa il refresh della pagina dell'articolo.
    Vorrei cliccare sul link, eseguire il codice e cambiare il link da "aggiungi a preferiti" a "rimuovi dai preferiti" (e viceversa), ma senza una pagina esterna non saprei come fare.

    Qualche suggerimento?


  • Moderatore

    Trasforma il link in Submit, fallo in POST all'interno di un Form.
    Come pagina di destinazione mantieni la tua articolo.asp e nello script della pagina (se il post proviene da quel submit) fai l'associazione o rimozione dai preferiti


  • User

    Grazie artcava,
    leggo solo ora la risposta, perdona il ritardo.
    Dunque, ho capito ciò che dici, resta però il fatto che ricarico la pagina (anche se il codice iniziale quindi controlla se è oppure no tra i preferiti).

    Ma la soluzione ottimale sarebbe una sullo stile di ebay, quando aggiungi un oggetto tra quelli osservati.

    Ritieni sia complicato?
    Grazie
    Luca


  • Moderatore

    In .NET è relativamente semplice, in ASP classico un po' più complicato ma non impossibile (solo perché ormai sono abituato a .NET eh eh eh)...
    La "tecnologia" utilizzata è AJAX, puoi farti aiutare dalla libreria javascript di Jquery...

    Nella sostanza prepari una pagina asp che elabora la richiesta e risponde con un pezzetto di html che vai a sostituire al link seguito dall'utente.

    Il codice standard da utilizzare (con le opportune modifiche per il tuo caso) è il seguente:

    
    function RenderPartial(action, obj) {
        $.ajax({
            url: action,
            dataType: "html",
            type: "POST",
            success: function (data) {
                $('' + obj).html(data);
                $('' + obj).show();
            },
            error: function (xmlHttpRequest, textStatus, error) {
                Failure(textStatus + ': ' + error);
            }
        });
    }
    
    

    Dove action è l'url della pagina asp da chiamare, mentre obj è il controllo html in cui sostituire ciò che la pagina asp produce, con l'accortezza di anteporre '#' se stai usando l'id di un controllo e '.' se invece utilizzi una classe css.

    Questo è il codice che utilizzo io, la funzione Failure la puoi sostituire con la tua messaggistica di errore standard


  • User

    bene, quindi posso anche, ad esempio, riaggiornare un div?
    Ora faccio un po' di prove.
    Grazie anche della disponibilità


  • Moderatore

    Esatto, il parametro obj può essere un qualsiasi tag html