12 messaggi dal 11 maggio 2004
Ciao a tutti,
devo modificare questo esempio di carrello della spesa integrandolo in una struttura in ASP.

La pagina server-side nativa e' in php, ho modificato sostituendo la mia nuova pagina in asp, dove in pratica estrae i dati del prodotto, ma non riesco a capire come richiamare il productID da passare appunto alla select per l'estrazione dei dati corretti.

nella pagina con l'elenco dei prodotti ho inserito il link che aggiunge appunto il prodotto nel carrello in questo modo:


<a href="#" onclick="addToBasket(<%=c%> );return false;"> mio prodotto</a>


dove <%=c%> è l'idProdotto recuperato dinamicamente dal database.
La pagina addProduct.asp (nella versione originale è addProduct.php) l'ho modificata così:

<%
if request("productId") <> "" then
  
    Set objRS = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT * FROM " &strDbTable& "prodotti WHERE p_status=1 AND idProdotto = '"&request("productId")&"' ORDER BY p_nome;"
    objRS.Open strSQL, DFCon, 1, 1
    If Not objRS.EOF Then 

      While Not objRS.EOF
        codProdotto = objRS("p_codice")
        descProdotto = objRS("p_desc")
        prezzoProdotto = objRS("p_prezzo")
      objRS.MoveNext
      Wend
    End if
    response.write codProdotto&"|||"&descProdotto&"|||"&prezzoProdotto

end if  
%>


Ho provato a stampare a video request ma risulta vuota.

Mentre il cuore dello script flytobasket.js è questo, riporto solo la parte di codice che richiama la funzione ajax addToBasket

function addToBasket(productId)
{
  if(!shopping_cart_div)shopping_cart_div = document.getElementById('shopping_cart');
  if(!flyingDiv){
    flyingDiv = document.createElement('DIV');
    flyingDiv.style.position = 'absolute';
    document.body.appendChild(flyingDiv);
  }
  
  shopping_cart_x = shoppingCart_getLeftPos(shopping_cart_div);
  shopping_cart_y = shoppingCart_getTopPos(shopping_cart_div);

  currentProductDiv = document.getElementById('slidingProduct' + productId);
  
  currentXPos = shoppingCart_getLeftPos(currentProductDiv);
  currentYPos = shoppingCart_getTopPos(currentProductDiv);
  
  diffX = shopping_cart_x - currentXPos;
  diffY = shopping_cart_y - currentYPos;
  

  
  var shoppingContentCopy = currentProductDiv.cloneNode(true);
  shoppingContentCopy.id='';
  flyingDiv.innerHTML = '';
  flyingDiv.style.left = currentXPos + 'px';
  flyingDiv.style.top = currentYPos + 'px';
  flyingDiv.appendChild(shoppingContentCopy);
  flyingDiv.style.display='block';
  flyingDiv.style.width = currentProductDiv.offsetWidth + 'px';
  flyToBasket(productId);
  
}


function flyToBasket(productId)
{
  var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY));
  var moveX = (diffX / maxDiff) * flyingSpeed;;
  var moveY = (diffY / maxDiff) * flyingSpeed;  
  
  currentXPos = currentXPos + moveX;
  currentYPos = currentYPos + moveY;
  
  flyingDiv.style.left = Math.round(currentXPos) + 'px';
  flyingDiv.style.top = Math.round(currentYPos) + 'px';  
  
  
  if(moveX>0 && currentXPos > shopping_cart_x){
    flyingDiv.style.display='none';    
  }
  if(moveX<0 && currentXPos < shopping_cart_x){
    flyingDiv.style.display='none';    
  }
    
  if(flyingDiv.style.display=='block')setTimeout('flyToBasket("' + productId + '")',10); else ajaxAddProduct(productId);  
}


Sto impazzendo per capire come mai non c'è verso di recuperare il valore...vi ringrazio per l'aiuto.
Elisa
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, dovresti postare anche il codice della funzione javascript ajaxAddProduct. Credo che sia quella ad inviare la richiesta alla pagina asp. Le altre due funzioni addToBasket e flyToBasket, da quanto ho capito, si occupano solo di realizzare delle animazioni grafiche.

eliven ha scritto:

Ho provato a stampare a video request ma risulta vuota.

fa niente, fai così: scarica Firebug, è un plugin di Firefox e Chrome, oppure utilizza la console di sviluppo di Internet Explorer 9 (tasto F12). Entrambi questi strumenti ti permettono di vedere le richieste fatte al server, compresi i valori inviati e la conseguente risposta.

Da Firebug, hai la scheda "Net" mentre dalla console di IE hai la scheda "Rete", dalla quale clicca "Avvia cattura". Infine, aggiorna la pagina. Vedrai tutto ciò che transita avanti e indietro tra client e server.

Parlando d'altro, c'è una cosa importante nel codice della pagina asp che va considerato: in questo momento è vulnerabile alla SQL injection. Un malintenzionato potrebbe passarti, via request, dei valori che vanno a compromettere la tua query. Quindi è necessario che tali valori siano "trattati" prima di impiegarli per comporre una query. Qui ci sono delle informazioni sul problema...
http://www.aspitalia.com/script/390/Prevenire-Attacchi-SQL-Injection.aspx

...e qui trovi la soluzione per risolverlo.
http://www.aspitalia.com/script/595/Proteggersi-Attacchi-SQL-Code-Injection-ASP.aspx

ciao,

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.