Display results χωρίς ανανέωση σελίδας

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

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

Απάντηση
Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Display results χωρίς ανανέωση σελίδας

Δημοσίευση από Pavlos1316 » 20 Ιουν 2011 11:04

Καλημέρα,

Χρησιμοποιώ αυτό τον κώδικα για να διαγράψω κάποιο item από το cart μου:

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

if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {
  // Access the array and run code to remove that array index
  $key_to_remove = $_POST['index_to_remove'];
    if &#40;count&#40;$_SESSION&#91;"cart_array"&#93;&#41; <= 1&#41; &#123;
     unset&#40;$_SESSION&#91;"cart_array"&#93;&#41;;
    &#125; else &#123;
     unset&#40;$_SESSION&#91;"cart_array"&#93;&#91;"$key_to_remove"&#93;&#41;;
     sort&#40;$_SESSION&#91;"cart_array"&#93;&#41;;
    &#125;
&#125;
και για να καλέσω τον πιο πάνω κώδικα:

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

'<td><form action="cart.php" method="post">
<input name="deleteBtn' . $item_id . '" type="submit" value="X" />
<input name="index_to_remove" type="hidden" value="' . $i . '" />
</form></td>';
Τώρα, αν πατήσω το Delete Button, ναι μεν θα διαγραφεί το item, αλλά χρειάζεται να κάνω ανανέωση σελίδας για να το δείξει. (Χρησιμοποιώ ένα script για να μην αφήνω τη σελίδα να κάνει αυτόματα ανανέωση)

Υπάρχει κάποιο ενδεικτικό script ώστε να μπορώ να δείξω το αποτέλεσμα (τη διαγραφή) χωρίς να χρειάζεται ανανέωση της σελίδας?

Ευχαριστώ

Άβαταρ μέλους
fuzzy_chris
Δημοσιεύσεις: 3
Εγγραφή: 16 Απρ 2009 13:57
Τοποθεσία: Αργυρούπολη, Αθήνα
Επικοινωνία:

Display results χωρίς ανανέωση σελίδας

Δημοσίευση από fuzzy_chris » 20 Ιουν 2011 13:07

Έτσι όπως το έχεις κάνει, ένας τρόπος είναι να ανανεώσεις το καλάθι στον browser με javascript χωρίς να πάρεις input από τον server. Αλλά αυτό κρύβει τον κίνδυνο να συμβεί οποιοδήποτε σφάλμα κατά την κλήση της διαγραφής και αυτή να μην γίνει αλλά εσύ θα το σβήσεις από την σελίδα του του χρήστη.

Μία ακόμα λύση είναι μετά το form submit που κάνεις για την διαγραφή είναι να κάνεις AJAX Request για ανανέωση του καλαθιού αλλά και αυτό μπορεί να έχει πρόβλημα συγχρονισμού. Δηλαδή μπορεί να αργήσει για οποιοδήποτε λόγο η διαγραφή, ενώ το update του καλαθιού να απαντήσει πιο γρήγορα (εξαρτάται πως θα καλέσεις το update του καλαθιού), οπότε θα το έχεις σβήσει αλλά δεν θα το δείξεις σωστά.

Σου προτείνω να αλλάξεις τον τρόπο που σβήνεις το item. Δηλαδή χρησιμοποιείς μία φόρμα που εξ ορισμού θα κάνει ανανέωση της ιστοσελίδας και στην συνέχεια μπλοκάρεις την ανανέωση.
Αν δεν θέλεις να ανανεώνεται όλη η σελίδα, τότε ο προτεινόμενος τρόπος είναι η διαγραφή να γίνεται με AJAX request στον server. Στην συνέχεια πρέπει με AJAX πάλι να ανανεώσεις το καλάθι σου. Αλλιώς προσπαθείς με μπαλώματα να κάνεις κάτι που δεν θα έπρεπε να γίνεται έτσι.

Τώρα για προτεινόμενα script, εγώ τουλάχιστον δεν μπορώ να προτείνω κάτι αφού δεν κατάλαβα πιο eshoping script χρησιμοποιείς.

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Display results χωρίς ανανέωση σελίδας

Δημοσίευση από Pavlos1316 » 20 Ιουν 2011 14:33

Παρακολούθησα το tutorial του http://www.youtube.com/watch?v=65gV8JOgWkQ και έφτασα εδώ...

Δεν ξέρω πως να χρησιμοποιήσω AJAX και ελπίζω να μην θέλει ολόκληρο το script αλλαγή γι αυτό....! :o

Απάντηση

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

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

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