Θέλω να χρησιμοποιήσω το jQuery ajax για να ανακτήσω δεδομένα από έναν διακομιστή.
Θέλω να βάλω τον ορισμό της συνάρτησης επανάκλησης επιτυχίας έξω από το μπλοκ .ajax()
όπως το ακόλουθο. Οπότε πρέπει να δηλώσω τη μεταβλητή dataFromServer
όπως παρακάτω ώστε να μπορώ να χρησιμοποιήσω τα δεδομένα που επιστρέφονται από την επανάκληση επιτυχίας;
Έχω δει τους περισσότερους ανθρώπους να ορίζουν το callback επιτυχίας μέσα στο μπλοκ .ajax()
. Οπότε είναι σωστός ο παρακάτω κώδικας αν θέλω να ορίσω το callback της επιτυχίας εκτός;
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
Απλά χρησιμοποιήστε:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
Η ιδιότητα success
απαιτεί μόνο μια αναφορά σε μια συνάρτηση και περνάει τα δεδομένα ως παράμετρο σε αυτή τη συνάρτηση.
Μπορείτε να προσπελάσετε τη συνάρτηση handleData
με αυτόν τον τρόπο λόγω του τρόπου με τον οποίο δηλώνεται η handleData
. Η JavaScript θα αναλύσει τον κώδικά σας για δηλώσεις συναρτήσεων πριν την εκτέλεσή του, οπότε θα μπορείτε να χρησιμοποιήσετε τη συνάρτηση σε κώδικα που βρίσκεται πριν την πραγματική δήλωση. Αυτό είναι γνωστό ως hoisting.
Αυτό όμως δεν'μετράει για τις συναρτήσεις που δηλώνονται με αυτόν τον τρόπο:
var myfunction = function(){}
Αυτές είναι διαθέσιμες μόνο όταν ο διερμηνέας τις πέρασε.
Δείτε αυτή την ερώτηση για περισσότερες πληροφορίες σχετικά με τους 2 τρόπους δήλωσης συναρτήσεων
Δοκιμάστε να ξαναγράψετε τον χειριστή επιτυχίας σας σε:
success : handleData
Η ιδιότητα success της μεθόδου ajax απαιτεί μόνο μια αναφορά σε μια συνάρτηση.
Στη συνάρτηση handleData μπορείτε να λάβετε έως και 3 παραμέτρους:
object data
string textStatus
jqXHR jqXHR
Θα έγραφα :
var handleData = function (data) {
alert(data);
//do some stuff
}
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}