Περισσότερα
Απεγνωσμένο συντακτικό σφάλμα: :
Εκτελώ μια κλήση AJAX στο σενάριο MooTools, αυτό λειτουργεί μια χαρά στον Firefox, αλλά στον Chrome λαμβάνω ένα `Uncaught SyntaxError: Δεν μπορώ να προσδιορίσω το γιατί. Σχολιάζοντας τον κώδικα για να προσδιορίσω πού είναι ο κακός κώδικας δεν αποδίδει τίποτα, σκέφτομαι ότι μπορεί να υπάρχει πρόβλημα με το JSON που επιστρέφεται. Ελέγχοντας στην κονσόλα βλέπω ότι το JSON που επιστρέφεται είναι το εξής:
{"votes":47,"totalvotes":90}
Δεν βλέπω κανένα πρόβλημα με αυτό, γιατί να εμφανιστεί αυτό το σφάλμα;
vote.each(function(e){
e.set('send', {
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = JSON.decode(resp);
if (!j) return false;
var restaurant = e.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
});
e.addEvent('submit', function(e){
e.stop();
this.send();
});
});
177
3
Απλά μια πληροφορία για τους ανθρώπους που μπορεί να έχουν το ίδιο πρόβλημα - έπρεπε να κάνω τον διακομιστή μου να στείλει πίσω το JSON ως application/json και ο προεπιλεγμένος χειριστής jQuery λειτούργησε μια χαρά.
Αυτό μόλις μου συνέβη και ο λόγος δεν ήταν κανένας από τους παραπάνω λόγους. Χρησιμοποιούσα την εντολή getJSON της jQuery και πρόσθετα
callback=?
για να χρησιμοποιήσω JSONP (καθώς έπρεπε να πάω cross-domain), και επέστρεφα τον κωδικό JSON{"foo":"bar"}
και έπαιρνα το σφάλμα.Αυτό συμβαίνει επειδή θα έπρεπε να είχα συμπεριλάβει τα δεδομένα της επανάκλησης, κάτι σαν
jQuery17209314005577471107_1335958194322({"foo":"bar"})
Εδώ είναι ο κώδικας PHP που χρησιμοποίησα για να το πετύχω αυτό, ο οποίος υποβαθμίζεται αν χρησιμοποιηθεί JSON (χωρίς callback):
Ελπίζω ότι αυτό θα βοηθήσει κάποιον στο μέλλον.
Μόλις έλυσα το πρόβλημα. Υπήρχε κάτι που προκαλούσε προβλήματα με μια τυπική κλήση Request, οπότε αυτός είναι ο κώδικας που χρησιμοποίησα αντ' αυτού:
Αν κάποιος γνωρίζει γιατί το τυπικό αντικείμενο Request μου δημιουργούσε προβλήματα, θα ήθελα πολύ να μάθω.