javascript refresh και ajax

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

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

Απάντηση
abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 07 Φεβ 2011 22:09

Καλησπέρα παιδιά.
Έχω αυτό

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

<script>

	
$&#40;'#loginbutton'&#41;.click&#40;function &#40;&#41;&#123;
if&#40;$&#40;this&#41;.attr&#40;"disabled"&#41; != "disabled"&#41;&#123;
var error = $.ajax&#40;&#123;
url&#58; "login.php",
data&#58; "username=" + $&#40;'#usernameinput'&#41;.val&#40;&#41;,
async&#58;false
&#125;&#41;.responseText;
if&#40;error != ''&#41;&#123;
alert&#40;error&#41;;
&#125;
else &#123;
location.reload&#40;&#41;;
&#125;
&#125;
&#125;&#41;;

var from = '';
showusers&#40;&#41;;
function showusers&#40;&#41;&#123;
$&#40;'#onlineusers'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'onlineusers.php?x=' + Math.random&#40;&#41; + '&selected=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
$&#40;'#messages'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'show-messages.php',
data&#58; '?x=' + Math.random&#40;&#41; + '&from=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
setTimeout&#40;'showusers&#40;&#41;',2000&#41;;
&#125;

$&#40;'.onlineuser'&#41;.click&#40;function &#40;&#41;&#123;
from = $&#40;this&#41;.html&#40;&#41;;
$&#40;'#messages'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'show-messages.php',
data&#58; '?x=' + Math.random&#40;&#41; + '&from=' + $&#40;this&#41;.html&#40;&#41;,
async&#58;false
&#125;&#41;.responseText&#41;;
$&#40;'#sendbutton'&#41;.removeAttr&#40;"disabled"&#41;;
showusers&#40;&#41;;
&#125;&#41;;

$&#40;'#sendbutton'&#41;.click&#40;function &#40;&#41;&#123;
if&#40;$&#40;this&#41;.attr&#40;"disabled"&#41; != "disabled"&#41;&#123;
var message = $&#40;'#message_prive'&#41;.val&#40;&#41;;
$.ajax&#40;&#123;
url&#58; 'send.php?to=' + from + '&mes=' + message
&#125;&#41;;
$&#40;'#message_prive'&#41;.val&#40;''&#41;;
showusers&#40;&#41;;
&#125;
&#125;&#41;;
</script>
το οποίο βγάζει usersonline και οταν κάνεις κλικ σε κάποιον κάνεις prive chat. To πρόβλημμα είναι ότι όταν ανοίγει το prive chat παράθυρο δεν μπορείς να κάνεις κλικ σε κάποιον online χρηστη για να κανεις prive chat παρα μόνο όταν κάνεις 2 φορές refresh όλη την σελίδα! ενώ όταν βάλω αυτό στο script $(document).ready(function () { }); μπορείς να κάνεις κλικ σε καποιον χωρίς refresh της σελίδας αλλά μετά δεν λειτουργεί το refresh setTimeout('showusers()',2000);(μάλλον) γιατί οταν πατας να στειλεις μηνυμα ο αλλος δεν το βλεππει real time αλλα όατν πατήσει και αυτος να στειλει μην, τοτε ανανεωνεται και βγάζει και το μην που του έστειλε ο προηγουμενος. Καμία ιδέα παιδιά?

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 07 Φεβ 2011 22:53

Kαι κάτι άλλο ρε παιδιά ενω από firefox στέλνω ελληνικά τα βγάζει μία χαρά από τον i.e. τα βγάζει κινέζικα

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

javascript refresh και ajax

Δημοσίευση από Akina » 08 Φεβ 2011 00:09

abeautifulmind έγραψε:γιατί οταν πατας να στειλεις μηνυμα ο αλλος δεν το βλεππει real time αλλα όατν πατήσει και αυτος να στειλει μην, τοτε ανανεωνεται και βγάζει και το μην που του έστειλε ο προηγουμενος. Καμία ιδέα παιδιά?
http://en.wikipedia.org/wiki/Push_technology

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 13 Φεβ 2011 17:40

Akina ευχαριστώ για την απάντηση αλλά μάλλον δεν το εξήγησα καλά η εγώ δεν κατάλαβα αυτό που δείχνεις ακριβώς.
Ενοοώ ότι το prive chat δουλεύει κανονικά με το autorefresh πριν βάλω το documenet ready
.Μόλις βάλω το document ready αυτόματα δεν δουλέυει το setTimeout('showusers()',2000); σαν να το ακυρώνει. Δεν μπορώ να το εξηγήσω καλύτερα.

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

javascript refresh και ajax

Δημοσίευση από Akina » 14 Φεβ 2011 06:42

έχεις δίκιο δεν είχα καταλάβει πιο ήταν το πρόβλημα σου..

To documenet ready καθορίζει μια συνάρτηση για να εκτελέσει, όταν τα DOM είναι πλήρως φορτωμένα. τι ακριβώς βάζεις μέσα στην $(document).ready ?

http://api.jquery.com/ready/
http://docs.jquery.com/Tutorials:Introd ... eady%28%29

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;
 //Put all your jQuery goodness in here
 $&#40;'#loginbutton'&#41;.click&#40;function &#40;&#41; ....
 $&#40;'.onlineuser'&#41;.click&#40;function &#40;&#41; ...
$&#40;'#sendbutton'&#41;.click&#40;function &#40;&#41;...
......
&#125;&#41;;
κάποιος έτσι πρέπει να είναι ...

ρίξε και μια ματια στην live() αν και δεν δουλεύει στον IE γατί απίτι καταλαβαίνω χωρίς να είμαι σίγουρη εκεί είναι το πρόβλημα σου

http://api.jquery.com/live/

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

 $&#40;'#loginbuttonl'&#41;.live&#40;'click',function&#40;&#41; 

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 14 Φεβ 2011 21:39

βάζω αυτό

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

$&#40;'#loginbutton'&#41;.click&#40;function &#40;&#41;&#123;
if&#40;$&#40;this&#41;.attr&#40;"disabled"&#41; != "disabled"&#41;&#123;
var error = $.ajax&#40;&#123;
url&#58; "login.php",
data&#58; "username=" + $&#40;'#usernameinput'&#41;.val&#40;&#41;,
async&#58;false
&#125;&#41;.responseText;
if&#40;error != ''&#41;&#123;
alert&#40;error&#41;;
&#125;
else &#123;
location.reload&#40;&#41;;
&#125;
&#125;
&#125;&#41;;

var from = '';
showusers&#40;&#41;;
function showusers&#40;&#41;&#123;
$&#40;'#onlineusers'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'onlineusers.php?x=' + Math.random&#40;&#41; + '&selected=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
$&#40;'#messages'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'show-messages.php',
data&#58; '?x=' + Math.random&#40;&#41; + '&from=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
setTimeout&#40;'showusers&#40;&#41;',2000&#41;;
&#125;

$&#40;'.onlineuser'&#41;.click&#40;function &#40;&#41;&#123;
from = $&#40;this&#41;.html&#40;&#41;;
$&#40;'#messages'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'show-messages.php',
data&#58; '?x=' + Math.random&#40;&#41; + '&from=' + $&#40;this&#41;.html&#40;&#41;,
async&#58;false
&#125;&#41;.responseText&#41;;
$&#40;'#sendbutton'&#41;.removeAttr&#40;"disabled"&#41;;
showusers&#40;&#41;;
&#125;&#41;;

$&#40;'#sendbutton'&#41;.click&#40;function &#40;&#41;&#123;
if&#40;$&#40;this&#41;.attr&#40;"disabled"&#41; != "disabled"&#41;&#123;
var message = $&#40;'#message_prive'&#41;.val&#40;&#41;;
$.ajax&#40;&#123;
url&#58; 'send.php?to=' + from + '&mes=' + message
&#125;&#41;;
$&#40;'#message_prive'&#41;.val&#40;''&#41;;
showusers&#40;&#41;;
&#125;
&#125;&#41;;

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

javascript refresh και ajax

Δημοσίευση από Akina » 15 Φεβ 2011 03:13

sory κιόλας αλλα τον έχεις διάβαση τον κώδικα που περνάς μέσα ?

αν μπορεί κάποιο παιδί με θεωρητικό υπόβαθρο ας εξήγηση αυτό εδώ :

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;


 function showusers&#40;&#41;&#123; &#125;

&#125;&#41;; 

γιατί έχω είμαι παιδί τις C και ή η γνώσης μου λένε αλλα πράγματα ή τα ματια μου κάνουνε πουλάκια ή έχω κάτι δεν ξέρω καλά :whistle:

οποιο παιδί μπορεί να εξήγηση αν θα μπορούσε να δουλέψει το παραπάνω κομμάτι κώδικα και για πιο λόγο ..

Yπενθυμίζω : To documenet ready καθορίζει μια συνάρτηση για να εκτελέσει, όταν τα DOM είναι πλήρως φορτωμένα. Δηλαδή anonymous function

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

javascript refresh και ajax

Δημοσίευση από korgr » 15 Φεβ 2011 09:31

Ο συγκεκριμένος κώδικας πράγματι θα εκτελεστεί τότε και μόνο τότε όταν (<- που το θυμήθηκα lol) φορτωθεί το DOM και θα καταφέρει να πραγματοποιήσει το απόλυτο τίποτα :lol:

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

javascript refresh και ajax

Δημοσίευση από Akina » 15 Φεβ 2011 12:55

αυτό εννοείτε :wink:

αλλα ο προβληματισμός μου ήταν αλλου :oops:

Eπειδή με την java (& Javascript) δεν τα πάω πολύ καλά σε θεωρητικό επίπεδο ...

1. Mπορείς καταρχήν να ορίσεις μια συνάρτηση μέσα σε μια άλλοι με τον τρόπο που δείχνω
2. Aν ναι είναι δυαντόν αυτή η συνάρτηση να αναγνωρίζεται ως global ?
3. Aν ναι είναι δυνατόν μια συνάρτηση που είναι ορισμένοι με τέτοιο τρόπο να δουλέψει με setTimeout ?
4. Αν όχι μήπως παρόλα αυτά στην ανωνυμους συνάρτησης μπορείς να ορίζεις με αυτόν τον τρόπο συνάρτησης εσωτερικά ?


Ξέρω ότι αν βγει η συνάρτηση έξω από το jQuery(document).ready και απλά την καλή μέσα στο jQuery(document).ready ο κώδικας θα δουλέψει. Aυτό που δεν ξέρω όμως στα σίγουρα είναι το αν εγώ κάπου ύστερο ή δεν ξέρω καλά κάτι, γιατί τα javasript τα ξέρω εμπειρικά.

sory που δεν το εξήγησα πολύ καλά και ο κώδικας επικεντρώθηκε στο ότι δεν κάνει τίποτα.
My false!

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;

 function showusers&#40;&#41;&#123; 
     //Do Something
 &#125;

&#125;&#41;;


Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

javascript refresh και ajax

Δημοσίευση από korgr » 15 Φεβ 2011 13:28

sorry και εγώ φταίω που δεν κατάλαβα :)
Στο

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;

 function showusers&#40;&#41;&#123;
     //Do Something
 &#125;

&#125;&#41;; 
η showusers() θα είναι προσβάσιμη μόνο μέσα από την ανώνυμη function
Αν δοκιμάσεις κάτι του τύπου

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

<a href="javascript&#58;showusers&#40;&#41;">show online users</a>
θα δεις ένα μεγαλοπρεπές not defined
Αν και όπως είπες μπορείς να ορίσεις την function εκτός της ανώνυμης και να την καλέσεις μέσα από αυτήν, υπάρχει και τρόπος να την ορίσεις μέσα στην ανώνυμη και να την έχεις διαθέσιμη σε global scope με

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;

 window.showusers = function showusers&#40;&#41;&#123;
     //Do Something
 &#125;

&#125;&#41;; 
Έτσι μπορείς να την καλέσεις από παντού.

Παρ' όλα αυτά επειδή και εγώ εμπειρικά έχω μάθει προγραμματισμό, αν κάπου κάνω λάθος θα ήταν καλό να μας διορθώσει κάποιος συνάδελφος που ειδικεύεται στην js

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 16 Φεβ 2011 18:17

Παιδιά ευχαριστώ πολύ για τις απαντήσεις σας και το ενδιφέρον σας αλλά έχω μπερδευτεί τελέιως τελικά με document.ready δεν υπάρχει τρόπος να παίξει το settimeout?

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

javascript refresh και ajax

Δημοσίευση από korgr » 16 Φεβ 2011 18:29

Για δοκίμασε το

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

setTimeout&#40;'showusers&#40;&#41;',2000&#41;; 
να το γράψεις

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

setTimeout&#40;showusers&#40;&#41;,2000&#41;; 
Εμένα μια χαρά μου δουλεύει η setTimeout() μέσα σε jQuery(document).ready

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

javascript refresh και ajax

Δημοσίευση από abeautifulmind » 17 Φεβ 2011 00:12

Αν το κάνω setTimeout(showusers(),2000); μου lagarei όλη η σελίδα :(

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

javascript refresh και ajax

Δημοσίευση από fafos » 17 Φεβ 2011 01:55

abeautifulmind έγραψε:Αν το κάνω setTimeout(showusers(),2000); μου lagarei όλη η σελίδα :(
etsi?

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

setTimeout&#40;showusers,2000&#41;; 
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

javascript refresh και ajax

Δημοσίευση από Akina » 17 Φεβ 2011 07:29

abeautifulmind έγραψε:Παιδιά ευχαριστώ πολύ για τις απαντήσεις σας και το ενδιφέρον σας αλλά έχω μπερδευτεί τελέιως τελικά με document.ready δεν υπάρχει τρόπος να παίξει το settimeout?
Kαταρχήν μιλάω μονο βάση εμπειρίας ... και μπορεί κάτι να μην είναι ακριβής από αυτά που λέω! Στηρίζομαι στην γνώσης μου από άλλες γλώσσες προγραμματισμού

1.Βγάλε την συνάρτηση έξω από το document.ready ... προσωπικά δεν θα διανοούμουν ποτε να ορίσω μια συνάρτηση μέσα σε μια άλλη γιατί το θεωρώ τελείως άτοπο ! Mονο οι ανώνυμες συνάρτησης έχουνε νομία μέσα σε μια συνάρτηση.... βασικά είναι από τα πράγματα που θα έβλεπα σε κάποιον κώδικα και θα εμενα κάπως εστί -> :naughty:

επόμενος αυτό εδώ το βγάζεις εκτος :

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

var from = '';
function showusers&#40;&#41;&#123;
$&#40;'#onlineusers'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'onlineusers.php?x=' + Math.random&#40;&#41; + '&selected=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
$&#40;'#messages'&#41;.html&#40;$.ajax&#40;&#123;
url&#58; 'show-messages.php',
data&#58; '?x=' + Math.random&#40;&#41; + '&from=' + from,
async&#58;false
&#125;&#41;.responseText&#41;;
setTimeout&#40;'showusers&#40;&#41;',2000&#41;;
&#125;
2. Το document.ready ορίζει μια ανώνυμη συνάρτηση για να τρέξει ... επόμενος αφήνεις μέσα αυτά που θες να εκτελεστούν όπως σου είχα γράψει από πάνω (νόμιζα ότι είχες καταλάβει με το πρώτο παράδειγμα που έδωσα τι πρέπει να υπάρχει μέσα) Παρεπιπτόντως θεωρώ ακόμα πω άτοπο προγραμματιστικά να ορίζεις μέσα σε μια ανώνυμη συνάρτηση μια άλλη! :naughty: :naughty: :naughty:

Eπόμενος αυτό εδώ μένει εντός:

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

jQuery&#40;document&#41;.ready&#40;function&#40;$&#41; &#123;
 //Put all your jQuery goodness in here
 $&#40;'#loginbutton'&#41;.click&#40;function &#40;&#41; ....
 $&#40;'.onlineuser'&#41;.click&#40;function &#40;&#41; ...
$&#40;'#sendbutton'&#41;.click&#40;function &#40;&#41;...
showusers&#40;&#41;;// <---- SOS
&#125;&#41;; 
Τι έχεις κάνει με αυτό ?
Εχεις "φόρτωση" κάποιες λειτουργίες (ανώνυμες συνάρτησης να τρέξουνε όταν πατηθεί κάποιο κλικ και έχεις και τρέχεις και την συνάρτηση σου για το ajax)

Πιο ήταν το πρόβλημα ? Προσωπική μου γνώμη είναι ότι απλά η setTimeout δεν αναγνώριζε καμια συνάρτηση για να εκτέλεση ... γιατί απλά δεν την έβρισκε :kaloe: Eχεις ορίσει μια συνάρτηση μέσα σε μια ανώνυμη συνάρτηση! Πως περιμένεις να την βρει ? και από που ? (εδώ πραγματικά αρχίζω να προβληματίζομαι για τον κώδικα που έγραψες)

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

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

======================

Πραγματικά αν κάποιο παιδί ξέρεις από js θα ήταν πολύ ωραίο να μας απάντηση στα παραπάνω ερώτημα μου γιατί κάποια πράγματα τα θεωρώ από άτοπα έως τρελα αλλα μπορεί κάπως με κάποιο τρόπο να έχουνε νόημα από κάποιον που έχει τις γνώσεις για κάποιο άλλο σκοπό βεβαια , από αυτόν που προσπαθεί να εκτέλεση το συγκεκριμένο τμήμα κώδικα που μπορεί εγώ να μην τον διανοούμαι επειδή ξέρω τα JS εμπειρικά και στηρίζομαι στις γνώσεις μου από άλλες γλώσσες προγραμματισμού που θα σου πετούσανε ένα error 100 κιλών άμα προσπαθούσες να κανεις κάτι τέτοιο .... :banana:

=======================

korgr έγραψε:Εμένα μια χαρά μου δουλεύει η setTimeout() μέσα σε jQuery(document).ready
εννοείτε πως δουλεύει μια χαρά απλά το παιδί προσπαθεί να το περάσει μέσα της συνάρτησης που έχει ορίσει στο διάστημα :wink:

=======================

με αυτόν τον τρόπο ορίζεις setTimeout() συνάρτηση :

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

setTimeout&#40;'DoSomething&#40;&#41;',500&#41;; 
έτσι περνάς ορίσματα :

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

setTimeout&#40;'DoSomething&#40;\'stringname\',\'stringname\',\''+varname+'stringname\'&#41;;',500&#41;;
και όταν τις περνάς μέσα σε μια συνάρτηση για να τις δουλεύεις global κανεις αυτό :

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

var timer = '';
function DoSomething&#40;&#41;&#123;
   //Do Something 
  timer = setTimeout&#40;'DoSomething&#40;&#41;',500&#41;;
&#125;

function clearTime&#40;&#41;&#123;

   clearTimeout&#40;timer&#41;;
&#125;
Reference - Anonymous Functions :

http://en.wikipedia.org/wiki/Anonymous_function
http://en.wikibooks.org/wiki/JavaScript ... _Functions

Απάντηση

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

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

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