Mój telefon Ajax nie traktuje danych z serwera jako JSON, nawet jeśli ustawię typ danych w JSON:

function Getmateriasfromserver(callback){
    var status_aux;
//Requisição HTTP, por dados provindos do url dado. Caso os dados recebidos sejam os esperados, entra no caso do SUCCESS
return $.ajax({
    url: 'materiasphp/materias.php',
dateType: 'json',
    success: function(data)
    {
        status_aux = data;
        callback(status_aux);
    var test = JSON.stringify(data);
    console.log(data);
    console.log(test[1]);
    }

Test drukowania konsoli [1] = "["

-1
Rodrigo Andrade 26 czerwiec 2017, 08:05

3 odpowiedzi

Najlepsza odpowiedź
var test = JSON.stringify(data);

Powinien prawdopodobnie być

var test = JSON.parse(data);
// or just 
var test = data;

Ponieważ jeśli jego rozrusiesz, uzyskujesz dostęp do liter w ciągu z nutowaniem wspornika.

var test="cat":
console.log(test[0]);

Jest c, pierwsza litera w ciągu

1
theRemix 26 czerwiec 2017, 05:37

JSON jest formatem danych oparty na tekstach.

JSON.stringify(data); bierze data i konwertuje go do tekstu JSON, który przechowuje w ciągu.

console.log(test[1]); Następnie odczytuje znak w indeksie 1 w tym ciągu i wyświetla go.

To normalne zachowanie.

Jeśli chcesz poradzić sobie z danymi jako strukturę danych JavaScript, a następnie nie konwertuj go na JSON !.

Po prostu pracuj bezpośrednio z strukturą danych w data.

1
Quentin 26 czerwiec 2017, 11:09

Masz również literówkę w swoim kodzie. dateType: powinien być dataType:

return $.ajax({
  url: 'materiasphp/materias.php',
  dataType: 'json',
  ...
2
genestd 26 czerwiec 2017, 06:15