Προγραμματισμός Διαδικτύου

Σχετικά έγγραφα
Μηχανή αναζήτησης βασισμένη σε AJAX και Soundex. Πτυχιακή Εργασία

Εφαρµογές και Περιβάλλοντα Εργασίας AJAX

JAVASCRIPT EVENTS. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Διαβάστε στο Παράρτημα Α.1 πώς θα γράψετε ένα πρόγραμμα PHP για την παροχή δεδομένων σε μορφή διαφορετική από την HTML.

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Εισαγωγή στην πληροφορική

Η HTML χρησιμοποιεί εντολές που ονομάζονται HTML tags δίνοντας εντολές στους Web browsers για το πώς να εμφανίζουν την κάθε ιστοσελίδα.

Εργαστήριο #12. Βήμα 1 ο. Βήμα 2 ο. Βήμα 3 ο. Βήμα 4 ο.

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form>

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Εργαστήριο 8. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

A J A X AJAX Γιάννης Αρβανιτάκης

Προγραμματισμός Διαδικτύου

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Οδηγίες Ακολουθήστε τα παρακάτω βήματα. Βεβαιωθείτε ότι το πρόγραμμά σας δουλεύει σωστά σε κάθε βήμα, πριν προχωρήσετε στο επόμενο.

Προγραμματισμός Διαδικτύου

Διάλεξη 3η HTML intermediate

Javascript events. part 01

PayByBank RESTful API GUIDE

ΔΟΜΗ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΤΕΙ Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών. Επώνυμο Όνομα: Α.Μ. : Εξάμηνο : Αίθουσα

WEB HTML. Web HTML MIDI. Web 5.1: HTML LAN

Κατανεμημένα Συστήματα. Javascript LCR example

Paybybank RESTful API GUIDE

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

ΕΠΛ 012. JavaScripts

Εφαρµογές διαδικτύου µε PHP

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ. Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας <FORM> και η τεχνική CGI)

Δρ. Δημήτριος Α. Κουτσομητρόπουλος. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Α.Τ.Ε.Ι. Πάτρας

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ

HTTP API v1.6 SMSBOX.GR HTTP API v

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

Άσκηση 6 Επαναληπτική Άσκηση HTML

Η HTML 5 θα αλλάξει το Web?

Εργαστήριο 7. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο

Περιεχόμενα. Πρόλογος...11

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

PHP Functions. by George Girtsou Copyright All Rights Reserved. Με την επιφύλαξη κάθε νόμιμου δικαιώματος.

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

Αρχιτεκτονική Υπολογιστών Εργαστήριο

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

Ιστορία της PHP

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 7: Json-Ajax-Jquery

1. (25%) Αναφέρετε πέντε (5) «καλoύς» κανόνες (πρακτικές) σχεδίασης web sites (όχι περισσότερες από δύο γραμμές για κάθε κανόνα)

Το αίτημα (http request) για την αποστολή μηνύματος γίνεται στον server μας στο URL με τις ακόλουθες μεταβλητές.

PHP 2. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

"Ανάπτυξη προηγμένης εφαρμογής απεικόνισης και ενσωμάτωσης Υπηρεσιών Καταλόγου (LDAP) με τη χρήση των τεχνολογιών Web 2.0"

Εργαστήριο 9. Styling with Javascript

Τα προγράμματα σε ASP που χρησιμοποιήθηκαν για την υλοποίηση της διαχείρισης των μαθημάτων.

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΔΟΜΗΣΗ ΚΩΔΙΚΑ. Μαθαίνω παίζοντας

Web Programming for Dummies

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Προγραμματισμός Διαδικτύου

Περιεχόμενα. Πρόλογος... xiii

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Βασικές Έννοιες Web Εφαρμογών

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Web εφαρμογή με χρήση LDAP και SMTP Server

Η βασική εργαλειοθήκη του διαδικτύου

Δικτυακά Πολυμέσα Ι: 2 η Εργασία. Να δημιουργήσετε μια HTML σελίδα η οποία να περιέχει μία φόρμα που να μοιάζει με αυτή της παρακάτω εικόνας:

Σταύρος Καουκάκης Ευτύχιος Βαβουράκης

Παιχνίδια σε Javascript

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Σημειώσεις D3. Προφανώς εάν προσθέταμε μία ή περισσότερες παραγράφους, πριν το script, θα άλλαζε το text στην πρώτη.

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Παρουσίαση PHP. Μιχάλης Ζήσης GreekLUG

Using Custom Python Expression Functions

Ενσωματωμένα Συστήματα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

2. Επιλέξτε την σωστή ετικέτα HTML που προσφέρει το μεγαλύτερο φόντο κειμένου. <head> <heading> <h6> <h1>

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

1. Απαιτήσεις εργασίας

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Πτυχιακή εργασία. Σύστημα παροχής υπηρεσιών δρομολόγησης και καθοδήγησης

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Transcript:

Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Προγραμματισμός Διαδικτύου Δρ. Μηνάς Δασυγένης mdasygenis@uowm.gr Πανεπιστήμιο Δυτικής Μακεδονίας 1

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Πανεπιστήμιο Δυτικής Μακεδονίας 2

Προγραμματισμός Διαδικτύου Ασύγχρονος Προγραμματισμός (AJAX) Πανεπιστήμιο Δυτικής Μακεδονίας 3

Αφού κατανοήσετε τα HTML XHTML CSS PHP DOM Επεκτάσεις..... το επόμενο βήμα είναι να μάθετε AJAX (Asynchronous JavaScript and XML) Πανεπιστήμιο Δυτικής Μακεδονίας 4

Τι είναι το AJAX Δεν είναι μια νέα γλώσσα προγραμματισμού. Είναι ένας νέος τρόπος να χρησιμοποιούνται τα υπάρχοντα στάνταρντ. Το AJAX είναι η τέχνη της ανταλλαγής δεδομένων με ένα διακομιστή και η ενημέρωση στοιχείων της σελίδας χωρίς να γίνει επαναφόρτιση (reload) ή υποβολή (submit) από το χρήστη. Πανεπιστήμιο Δυτικής Μακεδονίας 5

Τι επιτρέπει το AJAX Το AJAX είναι μια τεχνική για τη δημιουργία γρήγορων και δυναμικών σελίδων. Επιτρέπει την ασύγχρονη ενημέρωση δεδομένων της σελίδας με την ανταλλαγή μικρού μεγέθους δεδομένων με το διακομιστή στο παρασκήνιο (χωρίς να το καταλαβαίνει ο χρήστης). Ενημερώνεται η σελίδα χωρίς να γίνει επαναφόρτιση (reload). Οι κλασικές σελίδες πρέπει κάθε φορά να φορτώνουν μια ολόκληρη σελίδα για νέα δεδομένα. Χρησιμοποιείται ευρέως (facebook, google, youtube...). Πανεπιστήμιο Δυτικής Μακεδονίας 6

Σχεδιάγραμμα λειτουργίας AJAX πρόγραμμα περιήγησης Ένα συμβάν εμφανίζεται.. Δημιουργεί ένα αντικείμενο XMLHttpRequest. Στέλνει HttpRequest. Διαδίκτυο Διακομιστής Επεξεργασία του HTTPRequest. Δημιουργεί μία απάντηση και στέλνει δεδομένα πίσω στο πρόγραμμα περιήγησης. πρόγραμμα περιήγησης Επεξεργασία των επιστραφέντων δεδομένων χρησιμοποιώντας Javascript. Ενημερώνει το περιεχόμενο της σελίδας. Διαδίκτυο Πανεπιστήμιο Δυτικής Μακεδονίας 7

Το AJAX βασίζεται σε πρότυπα CSS (για το style). Javascript/DOM (για την εμφάνιση και τη διαδραστικότητα της σελίδας). XML (χρησιμοποιείται για τη μορφή των μεταφερόμενων αρχείων). XMLHttpRequest αντικείμενο (για την ασύγχρονη επικοινωνία με το διακομιστή). Έγινε ευρέως διαδεδομένο χάρη στο google το 2005 (google suggest). Πανεπιστήμιο Δυτικής Μακεδονίας 8

Ένα παράδειγμα στο AJAX (1/2) Έστω ότι έχουμε αυτή τη σελίδα: <html> <body> <div id= mydiv > <h2> Let AJAX change this text</h2></div> <button type= button onclick= loadxmldoc() > Change Content </button> </body> </html> Απαιτείται ένα <div> ή <tr> στο οποίο θα αποθηκεύεται η πληροφορία μας. Πανεπιστήμιο Δυτικής Μακεδονίας 9

Ένα παράδειγμα στο AJAX (2/2) Προσθέτουμε στο HEAD τη συνάρτηση loadxmldoc() η οποία θα υλοποιήσει το AJAX. <head> <script type="text/javascript"> function loadxmldoc() {... AJAX script goes here... } </script> </head> Όταν πατηθεί λοιπόν το κουμπί εκτελείται ο κώδικας AJAX. Πανεπιστήμιο Δυτικής Μακεδονίας 10

Ένα παράδειγμα στο AJAX Όλα τα σύγχρονα προγράμματα περιήγησης (browsers) υποστηρίζουν τη συνάρτηση XMLHttpRequest(); Επειδή στο παρελθόν ο IE5,IE6 χρησιμοποιούσε άλλο αντικείμενο για AJAX, χρησιμοποιούμε τον παρακάτω κώδικα μέσα στη συνάρτηση loadxmldoc(): if (window.xmlhttprequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} Πανεπιστήμιο Δυτικής Μακεδονίας 11

Αποστολή αίτησης Για να στείλουμε την αίτηση ασύγχρονα: xmlhttp.open("get","ajax_info.txt",true); xmlhttp.send(); Μέθοδος open(method,url,async) send(string) Περιγραφή Καθορίζει τον τύπο της αίτησης, τη διεύθυνση URL, και αν η αίτηση πρέπει να παραδοθεί ασύγχρονα ή όχι. method: ο τύπος της αίτησης: GET ή POST. url: η τοποθεσία του αρχείου στο διακομιστή. async: true (ασύγχρονα) ή false (συγχρονισμένα) Αποστέλλει την αίτηση στο διακομιστή. String: Χρησιμοποιείται μόνο για αιτήσεις POST. Πανεπιστήμιο Δυτικής Μακεδονίας 12

GET ή POST GET - Απλούστερα - Γρηγορότερα - Χρησιμοποιείται συχνότερα POST - Ενημερώνει ένα αρχείο ή μια βάση δεδομένων στο διακομιστή. - Αποστολή μεγάλου όγκου δεδομένων. - Αποστολή της εισόδου του χρήστη (ενδέχεται να περιέχει άγνωστους χαρακτήρες). - Είναι πιο ασφαλές. Πανεπιστήμιο Δυτικής Μακεδονίας 13

Παραδείγματα με GET / POST xmlhttp.open("get","demo_get.asp?t=" + Math.random(),true); xmlhttp.send(); xmlhttp.open("get","demo_get2.asp?fname=henr y&lname=ford",true); xmlhttp.send(); Παράδειγμα POST xmlhttp.open("post","ajax_test.asp",true); xmlhttp.setrequestheader("contenttype","application/x-www-form-urlencoded"); xmlhttp.send("fname=henry&lname=ford"); Πανεπιστήμιο Δυτικής Μακεδονίας 14

Επιπρόσθετες κεφαλίδες Αποστολή επιπρόσθετων κεφαλίδων με τη συνάρτηση setrequestheader(header,value) Μέθοδος setrequestheader(header,value) Περιγραφή Προσθέτει επικεφαλίδες HTTP στην αίτηση. header: καθορίζει το όνομα της επικεφαλίδας. value: Καθορίζει την τιμή της επικεφαλίδας. Πανεπιστήμιο Δυτικής Μακεδονίας 15

Ασύγχρονη επεξεργασία (async=true) ΠΡΟΤΙΜΑΤΑΙ Μόλις έρθουν τα δεδομένα από το διακομιστή πρέπει να τα επεξεργαστούμε. Αυτό το επιτυγχάνουμε με τις παρακάτω γραμμές: xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("mydiv").innerhtml =xmlhttp.responsetext; } } xmlhttp.open("get","ajax_info.txt",true); xmlhttp.send(); Πανεπιστήμιο Δυτικής Μακεδονίας 16

Σύγχρονη επεξεργασία (async=false) Αν στο xmlhttp.open δώσουμε την τρίτη παράμετρο ως false τότε το script εκτελείται σύγχρονα. Αυτό σημαίνει ότι έως να επιστρέψει τα αποτελέσματα ο διακομιστής δε συνεχίζει η εκτέλεση παρακάτω. Πιο απλή μορφή: xmlhttp.open("get","ajax_info.txt",false); xmlhttp.send(); document.getelementbyid("mydiv").innerhtml= xmlhttp.responsetext; Πανεπιστήμιο Δυτικής Μακεδονίας 17

Η απάντηση (response) από το διακομιστή (server) Η απάντηση τοποθετείται σε div ή tr ως: ResponseText ResponseXML Ιδιότητα responsetext responsexml Περιγραφή Παίρνει τα δεδομένα της απάντησης σαν μία συμβολοσειράς. Παίρνει τα δεδομένα της απάντησης σαν δεδομένα XML. document.getelementbyid("mydiv").innerhtml=xmlhttp.responsetext; xmldoc=xmlhttp.responsexml; var txt=""; x=xmldoc.getelementsbytagname("artist"); for (i=0;i<x.length;i++) { txt=txt + x[i].childnodes[0].nodevalue + "<br />"; } document.getelementbyid("mydiv").innerhtml=txt; Πανεπιστήμιο Δυτικής Μακεδονίας 18

Η συνάρτηση onreadystatechange Καλείται κάθε φορά που έρχονται δεδομένα από το διακομιστή. Ιδιοκτησία onreadystatechange readystate status Περιγραφή Αποθηκεύει μία συνάρτηση (ή ένα όνομα συνάρτησης) για να καλεστεί αυτόματα κάθε φορά που αλλάζει η ιδιοκτησία readystate. Κρατάει την κατάσταση του XMLHttpRequest. Αλλαγές από 0 έως 4. 0: η αίτηση δεν έχει αρχικοποιηθεί 1: καθιερώθηκε η σύνδεση του διακομιστή 2: η αίτηση λήφθηκε 3: επεξεργασία αίτησης 4: η αίτηση ολοκληρώθηκε και η απάντηση είναι έτοιμη 200: OK 404: Page no found. Σημειώστε ότι η συνάρτηση onreadystatechange καλείται 4 φορές για κάθε κατάσταση (1,2,3,4) Πανεπιστήμιο Δυτικής Μακεδονίας 19

Παράδειγμα με την onreadstatechange() xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("mydiv").innerhtml= } xmlhttp.responsetext; } Πανεπιστήμιο Δυτικής Μακεδονίας 20

AJAX Προχωρημένα θέματα Πανεπιστήμιο Δυτικής Μακεδονίας 21

Πολλαπλές διεργασίες AJAX στην ίδια σελίδα Αν υπάρχουν πολλαπλές AJAX διεργασίες τότε πρέπει να χρησιμοποιηθεί μια συνάρτηση επανάκλησης (callback) για κάθε έργο (task) και μια για το αντικείμενο XMLHttpRequest. Χρησιμοποιείται η τεχνική της συνάρτησης επανάκλησης (callback). Η συνάρτηση επανάκλησης (callback) ονομάζεται η συνάρτηση που περνάει ως παράμετρος σε μια άλλη συνάρτηση. Πανεπιστήμιο Δυτικής Μακεδονίας 22

Παράδειγμα: Δημιουργώντας τη showhint() σε φόρμα PHP Μια καλή τεχνική στις φόρμες είναι η δημιουργία υποδείξεων (hints) καθώς πληκτρολογεί ο χρήστης: Πανεπιστήμιο Δυτικής Μακεδονίας 23

Η φόρμα ενεργοποιεί τον χειριστή συμβάντων (event handler ) για onkeyup (1/2) <form action=""> First name: <input type="text" id="txt1" onkeyup="showhint(this.value)" /> </form> <p>suggestions: <span id="txthint"></span></p> Πανεπιστήμιο Δυτικής Μακεδονίας 24

Η συνάρτηση showhint(str) (2/2) function showhint(str) {var xmlhttp; if (str.length==0) { document.getelementbyid("txthint").innerhtml=""; return; } if (window.xmlhttprequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("txthint").innerhtml=xmlhttp.respon setext; } } xmlhttp.open("get","gethint.asp?q="+str,true); xmlhttp.send(); } Πανεπιστήμιο Δυτικής Μακεδονίας 25

Εξήγηση της συνάρτησης showhint() Αν είναι άδειο το πεδίο εισαγωγής (input field) τότε μη δείχνεις τίποτα. Αν δεν είναι άδειο: Δημιούργησε το αντικείμενο XMLHttpRequest. Δημιούργησε τη συνάρτηση όταν μας στείλει δεδομένα ο διακομιστής. Στείλε την αίτηση στο διακομιστή. Παρατηρήστε ότι χρησιμοποιούμε τη μέθοδο GET. Πανεπιστήμιο Δυτικής Μακεδονίας 26

Το script του διακομιστή (1/2) //get the q parameter from URL $q=$_get["q"]; //lookup all hints from array if length of q>0 if (strlen($q) > 0) { $hint=""; for($i=0; $i<count($a); $i++) { if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) { if ($hint=="") { $hint=$a[$i]; } else { $hint=$hint.", ".$a[$i]; } } } } // Set output to "no suggestion" if no hint were found // or to the correct values if ($hint == "") { $response="no suggestion"; } else { $response=$hint; } //output the response echo $response; Πανεπιστήμιο Δυτικής Μακεδονίας 27

Το script του διακομιστή (1/2) // Fill up array with names $a[]="anna"; $a[]="brittany"; $a[]="cinderella"; $a[]="diana"; $a[]="eva"; $a[]="fiona"; $a[]="gunda"; $a[]="hege"; $a[]="inga"; $a[]="johanna"; $a[]="kitty";... Πανεπιστήμιο Δυτικής Μακεδονίας 28

Μπορούμε στο διακομιστή να χρησιμοποιήσουμε και ΒΔ Μόλις επιλεχθεί ένα όνομα, χωρίς να πατηθεί κάποιο άλλο πλήκτρο... Πανεπιστήμιο Δυτικής Μακεδονίας 29

Η σελίδα μας Χρησιμοποιούμε μια φόρμα στην οποία έχουμε ένα select box. Έχουμε συνδέσει το γεγονός onchange του select box με τη συνάρτηση showcustomer(str). <select name="customers" onchange="showcustomer(this.value)"> Κάθε φορά που γίνεται λοιπόν η αλλαγή καλείται η showcustomer με παράμετρο το όνομα που έχει επιλεχθεί. Πανεπιστήμιο Δυτικής Μακεδονίας 30

Η συνάρτηση showcustomer() function showcustomer(str) { var xmlhttp; if (str=="") { document.getelementbyid("txthint").innerhtml=""; return; } if (window.xmlhttprequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readystate==4 && xmlhttp.status==200) { document.getelementbyid("txthint").innerhtml=xmlhttp.responsetext; } } xmlhttp.open("get","getcustomer.php?q="+str,true); xmlhttp.send(); } Πανεπιστήμιο Δυτικής Μακεδονίας 31

Η συνάρτηση showcustomer() Η συνάρτηση λοιπόν: Ελέγχει αν έχει κληθεί με κάποια μη μηδενική συμβολοσειρά (string). Δημιουργεί το αντικείμενο XMLHttpRequest. Δημιουργεί τη συνάρτηση χειρισμού. Στέλνει το αίτημα στο διακομιστή. Παρατηρήστε ότι επιλέξαμε να χρησιμοποιήσουμε τη μέθοδο GET και την παράμετρο q με την επιλογή μας. Πανεπιστήμιο Δυτικής Μακεδονίας 32

Μπορούμε στο διακομιστή να <?php χρησιμοποιήσουμε και ΒΔ $q=$_get["q"]; $con = mysql_connect('localhost', 'peter', 'abc123'); if (!$con) { die('could not connect: '. mysql_error()); } mysql_select_db("ajax_demo", $con); $sql="select * FROM user WHERE id = '".$q."'"; $result = mysql_query($sql); echo "<table border='1'> <tr> <th>firstname</th> <th>lastname</th> <th>age</th> <th>hometown</th> <th>job</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>". $row['firstname']. "</td>"; echo "<td>". $row['lastname']. "</td>"; echo "<td>". $row['age']. "</td>"; echo "<td>". $row['hometown']. "</td>"; echo "<td>". $row['job']. "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con);?> Πανεπιστήμιο Δυτικής Μακεδονίας 33

Περισσότερα παραδείγματα Επισκεφτείτε τη σελίδα http://www.w3schools.com/ajax/ajax_examples.asp Για περισσότερα παραδείγματα Πανεπιστήμιο Δυτικής Μακεδονίας 34