SyntaxError: JSON.parse: caracter neașteptat la linia 1 coloana 2 din JSON (Programare, Javascript, Php, Jquery, Json, Ajax)

Ðr Ssamade a intrebat.

Am nevoie să adaug acest div la un alt div, dar îmi dă această eroare:

SyntaxError: JSON.parse: caracter neașteptat la linia 1 coloana 2 a datelor JSON

Acesta este codul meu javascript:

var str = {'message': message,'text': text};
$.ajax({
    type: "POST",
    url: "api/reply",
    data: str,
    dataType: "json",
    cache: false,
    success: function(response)
    {
        var respons = jQuery.parseJSON(response);
        var type = respons.status
        if (type == 'success') {
            $("<div></div>").html(respons.message).appendTo("#messages");
        }
        else
        {
            toastr.error(respons.message)
        }
    }
})

Comentarii

  • Acesta nu este un JSON valid. Rulați-l prin jsonlint.com pentru a-l valida –  > Por charlietfl.
  • Când aruncați codul în JSBin, vedeți imediat că aveți câteva erori de sintaxă. Am adăugat un endpoint API de test și o intrare falsă, astfel încât să vă puteți juca cu el acolo: jsbin.com/sojibojetu/edit?html,js,output –  > Por Andru.
  • Posibil duplicat al I keep getting „Uncaught SyntaxError: Unexpected token o” –  > Por Heretic Monkey.
4 răspunsuri
Alfredo EM

Pur și simplu schimbați

var respons = jQuery.parseJSON(response);

în

var respons = response;

Explicație:

În cazul în care configurația apelului dvs. AJAX are dataType: json veți obține un obiect JavaScript, astfel încât nu mai este necesar să utilizați JSON.parse().

Max Voisard

Acesta este un mod hackish și neortodox de a analiza JSON, dar dacă doriți în continuare să utilizați JSON.parse() de la un apel AJAX sau pur și simplu pe JSON care este deja analizat și nu este un șir de caractere, puteți utiliza JSON.stringify() în interiorul acestuia:

var respons = JSON.parse(JSON.stringify(response));

Comentarii

  • Aveți dreptate, dar nu cred că există un caz de utilizare pentru asta. –  > Por Kokul Jose.
Tal87

valorile din obiectul dvs. par a fi nedefinite.changevar str = {'message': message,'text': text}; învar str = {message: 'message',text: 'text'};

Nalan Madheswaran

Problema este că nu analizezi un șir de caractere, ci un obiect deja analizat.