OK, więc próbuję pobrać dane z pliku json, który ma status kilku diod LED itp. Mam skrypt który uruchamia się kilka razy na sekundę i pobiera dane, a strona internetowa ładuje je. Problem polega na tym, że po około 20-krotnym czasie odczytywania pliku json przez serwer, ten błąd zostanie zgłoszony.SyntaxError: JSON.parse: nieoczekiwany koniec danych w wierszu 1 kolumny 1 danych JSON
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
// For toggling the LED/switch status indicators using the json data
$(document).ready(function() {
(function worker() {
$.ajax({
url: 'server_info.json',
success: function(data) {
var json = $.parseJSON(data);
console.log(json);
if (json.led_1 == "off") {
// do stuff
}
if (json.led_2 == "off") {
// do stuff
}
if (json.led_3 == "off") {
// do stuff
}
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 250);
}
});
})();
});
plik json wygląda następująco:
{ "led_1": "on", "led_2": "on", "led_3": "on" }
Wydaje mi się, że dane JSON jest zawsze prawidłowo sformatowany. Nie rozumiem, skąd pochodzi błąd. Jakieś pomysły?
Albo rzucić przerwania na początku funkcji, lub obserwować ruch sieciowy na karcie sieciowej, i zobaczyć, co dane wygląda jak przed błędem. Jeśli dzieje się to tylko raz na 20, Twój kod prawdopodobnie jest w porządku, a dane nie mogą być podawane poprawnie. –
Czy sprawdziłeś, jakie dane są przed błędem? 'console.log (dane);' Czy jesteś pewien, że serwer nie zwraca czegoś innego? – epascarello
Czasami uzyskuję sesję tmp, aby usunąć komunikat o błędzie po kilku żądaniach. Może coś zepsuje odpowiedź. – Mouser