Ajax και asp

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 10 Μάιος 2015 14:36

Καλησπέρα παιδιά,
έχω σε ένα site εμφάνιση καλαθιού αγορών και οπως δουλεύει τώρα μπορεί ο χρήστης να πατήσει ένα κουμπί το οποίο επανυπολογίζει τις τιμές με βάση τις ποσότητες που έχει πειράξει ο χρήστης.
απλά θέλω να το κάνω αυτόματο τώρα έτσι ώστε όταν αλλάζει ο χρήστης μια ποσότητα να καλείται αυτόματα ο κώδικας του κουμπιού και να κάνει τους υπολογισμούς

τώρα στο κουμπί υπάρχει αυτός ο κώδικας :

Κώδικας: Επιλογή όλων

<a href="#" onclick="frm_wishlist.action='subs_wlist2.asp?action=upd_all&e_wlist_id=<%=e_wlist_id%>';frm_wishlist.submit&#40;&#41;;">
και όλη η δουλειά γίνεται σε vb function στη σελίδα subs_wlist2.asp

οπότε θέλω στην αλλαγή τιμής της ποσότητας να καλώ ajax function που να κάνει την ίδια δουλειά

ευχαριστώ εκ των προτέρων

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ajax και asp

Δημοσίευση από dva_dev » 10 Μάιος 2015 17:19

Φτιάξε μια νέα σελίδα που να κάνει μόνο τους υπολογισμούς και να επιστρέφει πίσω τα data σε json.
Καλείς τη νέα σελίδα με ajax και μετά παίρνεις τα data που σου επέστρεψε και ενημερώνεις τη σελίδα σου με τις τιμές.

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 10 Μάιος 2015 18:46

επειδή αυτό ίσως πάρει περισσότερο χρόνο που θέλω να αφιερώσω δε μπορεί να δουλέψει αλλιώς?απλά καλώντας την ίδια function?

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 20 Μάιος 2015 20:34

με jquery

Κώδικας: Επιλογή όλων

$&#40;'input.quantity'&#41;.keyup&#40;function&#40;&#41;&#123; jQuery&#40;'a.refreshquan'&#41;.trigger&#40;"click"&#41;&#125;&#41;;
δίνεις κλάση quantity στα input σου και κλάση refreshquan στο κουμπί και όποτε γράφει κάποιος κάτι μέσα στο quantity θα γίνεται click (άρα θα καλείται η function του onclick) το κουμπί.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 23 Ιουν 2015 23:29

giannis17 έγραψε:με jquery

Κώδικας: Επιλογή όλων

$&#40;'input.quantity'&#41;.keyup&#40;function&#40;&#41;&#123; jQuery&#40;'a.refreshquan'&#41;.trigger&#40;"click"&#41;&#125;&#41;;
δίνεις κλάση quantity στα input σου και κλάση refreshquan στο κουμπί και όποτε γράφει κάποιος κάτι μέσα στο quantity θα γίνεται click (άρα θα καλείται η function του onclick) το κουμπί.
συγγνώμη τώρα το είδα, και η δουλειά θα γίνεται χωρίς refresh της σελίδας?

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 24 Ιουν 2015 00:02

Ουσιαστικά θα κάνει ότι κάνει και το κουμπί, αν το κουμπί κάνει refresh τότε και με το keyup θα κάνει refresh.

Αν θες να μετατρέψεις το form σε ajax θα πρέπει αντί να την κάνεις submit να στείλεις τα δεδομένα με ajax αλλά λογικά θα πάρεις πίσω ολόκληρη τη σελίδα σαν απάντηση και όχι μόνο τις τιμές. Βέβαια μπορείς να τις απομονώσεις δημιουργώντας ένα ψευδο-DOM από το ajax reply.

πχ

Κώδικας: Επιλογή όλων

// apothikevoume ola ta values san data
var data = frm_wishlist.serialize&#40;&#41;;
// stelnoume to request
$.ajax&#40;&#123;
    url&#58; "subs_wlist2.asp?action=upd_all&e_wlist_id=<%=e_wlist_id%>",
    type&#58; "POST",
    data&#58; data,
    success&#58; function&#40;reply&#41;&#123;
// theoroume oti lamvanoume olokliri tin selida san apantisi opote tin apothikevoume se mia metavliti
     var fullpage = $&#40;reply&#41;;
// vriskoume tis times theorontas oti exoun mia monadiki klasi .prices
     var newprices = $&#40;'.prices', fullpage&#41;;
// pername tis nees times sti thesi ton palion
     $&#40;'.prices'&#41;.text&#40;$&#40;newprices&#41;.text&#40;&#41;&#41;;
    &#125;
&#125;&#41;;
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 24 Ιουν 2015 23:01

να τα πάρουμε λίγο με τη σειρά για να μη μπερδετυτούμε, υπάρχει η φόρμα στην οποία υπάρχουν δυο πεδία με ποσότητες - ένα τεμάχια και ένα κιβώτια - :

Κώδικας: Επιλογή όλων

  Out "<TD align=left><input type=""TEXT"" name=""Qty" & item.attributes.getNamedItem&#40;"productid"&#41;.text
        Out """ VALUE=""" & item.attributes.getNamedItem&#40;"product_item"&#41;.text & """ MAXLENGTH=""3"" SIZE=""1"" style=""text-align&#58; center; font-size&#58; 11px;width&#58; 14px;""></td>"
	Out "<TD align=center><input type=""TEXT"" name=""QtyBox" & item.attributes.getNamedItem&#40;"productid"&#41;.text
	Out """ VALUE=""" & item.attributes.getNamedItem&#40;"product_boxes"&#41;.text & """ MAXLENGTH=""3"" SIZE=""1"" style=""text-align&#58; center; font-size&#58; 11px;width&#58; 14px;""></td>"
στο κουμπί ενημέρωση καλείται αυτό :

Κώδικας: Επιλογή όλων

Out "<TD COLSPAN=2 ALIGN=""LEFT""><INPUT TYPE=""IMAGE"" SRC=""update-basket.png"" NAME=""DO"" VALUE=""ΕΝΗΜΕΡΩΣΗ"" onclick=""BASKET.action='basket.asp?DO=ΕΝΗΜΕΡΩΣΗ'"" style=""width&#58;180px;font-size&#58;11px;border&#58;none;""></TD></TR>"
το οποίο με τη σειρά του καλεί αυτό :

Κώδικας: Επιλογή όλων

Sub RecalcBag&#40;BagItems&#41;
	
    For Each item in BagItems.childNodes
	
        nQty = CInt&#40;Request.Form&#40;"Qty" & item.attributes.getNamedItem&#40;"productid"&#41;.text&#41;&#41;
        nQtyBox = CInt&#40;Request.Form&#40;"QtyBox" & item.attributes.getNamedItem&#40;"productid"&#41;.text&#41;&#41;
	
        Qty = CInt&#40;item.attributes.getNamedItem&#40;"product_size"&#41;.text&#41;
        If Trim&#40;nQty&#41; <> "" And Trim&#40;nQtyBox&#41; <> "" And IsNumeric&#40;nQty&#41; And IsNumeric&#40;nQtyBox&#41; Then
		
            If nQty < 1 And nQtyBox < 1 Then
                BagItems.removeChild item
            Else
                item.attributes.getNamedItem&#40;"product_item"&#41;.text = nQty
                item.attributes.getNamedItem&#40;"product_boxes"&#41;.text = nQtyBox
                item.text = nQty + &#40;nQtyBox * Qty&#41;
		
            End If
        End If
	
    Next	
	
End Sub
ουσιαστικά εσύ λες να μπει ο κώδικας της κλήσης της sub όταν αλλάζει κάποιο τεμάχιο ποσότητας, σωστά?

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 24 Ιουν 2015 23:31

η sub ορίζει τα item όταν δημιουργείται η σελίδα server-side, ουσιαστικά και να την καλέσουμε μόνη της δεν κερδίζουμε κάτι γιατί δεν επιστρέφει δεδομένα (δεν έχει δικό της out).

Ή θα πρέπει να φτιαχτεί καινούριο αρχείο asp που να σου γυρνάει με out μόνο τα items ή θα καλείς όλη την σελίδα όπως σου έγραψα το παράδειγμα παραπάνω.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 24 Ιουν 2015 23:44

ναι αλλά ουσιαστικά ξαναφτιάχνει το καλάθι οπότε όταν καλείται σε ξαναπετάει στη σελίδα του καλαθιού σου και βλέπεις τα ενημερωμένα προϊόντα

εγώ και να πάω στη λογική που λες δε πρέπει να ξανακαλέσω τη συγκεκριμένη sub για να φτιάξει το καλάθι σωστά? και να έχω ενημερωμένες ποσότητες τιμές κλπ

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 25 Ιουν 2015 08:49

Και σου ξαναλέω η συγκεκριμένη sub δεν σε βοηθάει αυτή τη στιγμή για να πεις ότι θα την βάλεις σε ένα αρχείο και να την καλείς μόνη της. Δεν θα κάνει τίποτα γιατί θα προσπαθεί να αλλάξει τις τιμές στο αρχείο όπου υπάρχει όχι εκεί από όπου την καλείς. Δεν γίνεται να αλλάξεις client-side content με server-side κώδικα χωρίς refresh, πρέπει η αλλαγή να γίνει με javascript.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 02 Ιούλ 2015 18:55

καλησπέρα και πάλι,
λόγω των τελευταίων εξελίξεων τώρα κατάφερα να ασχοληθώ με το συγκεκριμένο ζήτημα,
αλλά επειδή τελικά πριν πιάσω αυτό το κομμάτι πρέπει να κάνω κάτι άλλο που θέλω τη γνώμη σας, στη κεντρική σελίδα μπορεί ο χρήστης να κάνει προσθήκη στο καλάθι αλλά τον μεταφέρει απευθείας στο καλάθι αγορών και θέλω όταν πατάει το κουμπί της προσθήκης να μένει στη σελίδα που είναι και να ενημερώνετε το καλάθι του, η λογική που παίζει είναι η εξής :

Κώδικας: Επιλογή όλων

basketuser.asp?id=7547&qty=1&box=0&offer=0
και στη basketuser.asp γίνεται το εξής, υπάρχει μια sub που πέρνει σαν input τις μεταβλητές του παραπάνω link και εκεί μαζεύει στοιχεία από τη βάση και φτιάχνει το προϊόν και μετά φτιάχνει ένα xml με όλο το bag

άρα θα μπορέσω να καλέσω απευθείας με ajax τη σελίδα και να γίνει αυτόματα το refresh?

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 03 Ιούλ 2015 02:00

ουσιαστικά το καλάθι αποθηκεύεται στο Session, μπορείς να καλείς το basketuser με ajax και εφόσον παίρνεις http.200 να πετάς και ένα μήνυμα πως το προϊόν προστέθηκε στο καλάθι αλλά ουσιαστικά το session της σελίδας σου θα συνεχίσει να έχει το παλιό καλάθι οπότε είτε θα το ενημερώνεις χειροκίνητα (δες εδώ http://forums.asp.net/post/4014066.aspx) ή θα κάνεις refresh την σελίδα.

Αν βέβαια δεν έχεις κάποιο cart module που να χρειάζεται ανανέωση και το link του καλαθιού δεν κάνει post κάτι αλλά απλά φορτώνει την σελίδα του καλαθιού τότε δεν σε ενοχλεί.

Υ.Γ. πόσο παλιό είναι αυτό το eshop πια? :D
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 03 Ιούλ 2015 10:01

άστα να πάνε είναι αρκετά παλιό και χάσιμο

αν τελικά κάνω αυτό που λες , να καλώ το basketuser και να στέλνω τις παραμέτρους στη sub αν κάνω refresh στη σελίδα χωρίς να γίνεται reload η σελίδα λογικά δεν είμαι οκ?

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Ajax και asp

Δημοσίευση από giannis17 » 03 Ιούλ 2015 10:14

για αρχή δοκίμασε το με σκέτο το ajax και δες ότι παίζει σωστά (αφού βάλεις κάτι στο καλάθι πήγαινε μετά στη σελίδα του καλαθιού να δεις οτι όντως έχει μπει), αν δουλεύει μπορείς να το αφήσεις έτσι.

Επειδή όμως συνήθως τα link προς το καλάθι σε αυτές τις αρχαιότητες κάνουν post και δεν είναι απλά link τότε θα χρειαστεί παραπάνω δουλειά.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

Ajax και asp

Δημοσίευση από txc » 06 Ιούλ 2015 20:10

εννοείς να καλέσω τη vb sub μέσα από javascript function ?
ουσιαστικά η vb sub βρίσκεται στη basketuser σελίδα και εκεί γίνεται η δουλειά

μπορώ να την καλέσω απευθείας από js?

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης