2016-04-05 11 views
2

Ich schreibe meine erste Ajax-Anfrage, auf einer Groovy/Grails-Plattform. HierRetrieve POST JSON Antwort

var newDataB = $.ajax({ 
    method:'post', 
    url: url, 
    async: false, 
    data: {source:"${source}"}, 
    success: function (response) { 
     jsonData = response; 
     var res = JSON.parse(jsonData); 
       alert(res);// 
    } 
}); 

ist die Antwort meines Controller "url"

def result = [ value: 'ok' ] 
    render result as JSON 

Aber es funktioniert nicht und ich erhalte eine Fehlermeldung in meinem Browser

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 
var res = JSON.parse(jsonData); 

Ich verstehe nicht, scheint die Antwort ein nettes formatiertes JSON zu sein?

EDIT habe ich einen Druck wie Paul schlägt vor:

Wenn i

var newDataB = $.ajax({ 
    method:'post', 
    url: url, 
    async: false, 
    dataType: 'json', 
    data: {source:"${source}"}, 
    success: function (response) { 
     console.log(response) 
     console.log(response.value) 
     jsonData = response; 
    } 
}); 

Der erste Druck auszuführen ist:

Objekt {value = "ok"}

Der zweite Druck ist

ok

Wenn ich das Ergebnis erhalten will, wie ist der richtige Weg?

Muss ich den Wert in der Anweisung zuweisen "Erfolg: function (Antwort) {"

tun für mich so etwas wie

var result 

var newDataB = $.ajax({ 
    method:'post', 
    url: url, 
    async: false, 
    dataType: 'json', 
    data: {source:"${source}"}, 
    success: function (response) { 
    result = response.value 
    } 
}); 

console.log("result : "+result); 

Dieser Code funktioniert !!

Oder vielleicht gibt es einen Weg, um das Ergebnis zu erhalten, etwas zu tun, wie

var newDataB = $.ajax({ 
    method:'post', 
    url: url, 
    async: false, 
    dataType: 'json', 
    data: {source:"${source}"}, 
    success: function (response) { 

    } 
}); 

var result = newDataB.response.somethingblablabla 

oder

var result = OneFunction(newDataB.response) 

??????

+0

sind Sie sicher, dass Sie es analysieren müssen? was ist, wenn Sie 'console.log (Antwort)' –

+0

Vielen Dank für Ihre Antwort, – julienasefth

Antwort

0

Sie sollten es nicht analysieren müssen, wenn Ihr Server json bereitstellt.

Sie verwenden obwohl jQuery datatype zu zwingen, eine bestimmte Art zu verwenden:

var newDataB = $.ajax({ 
    method:'post', 
    url: url, 
    async: false, 
    dataType: 'json', 
    data: {source:"${source}"}, 
    success: function (response) { 
     console.log(response); 

    } 
}); 
+0

Hallo danke für Ihre Antwort, aber das Ergebnis ist das gleiche !!! – julienasefth

+0

Sorry hat Ihr Parse nicht entfernt. Versuchen Sie es wie oben beschrieben, die Antwort sollte nur ein JavaScript-Objekt sein, mit dem Sie arbeiten können. –

0

Sie können Objekt, bevor er es machen Zeichenfolgefunktion zu analysieren, indem Sie einfach JSON.stringify() verwenden.

var newDataB = $.ajax({ 
     method: 'post', 
     url: "${createLink(controller: 'util',action: 'test')}", 
     async: false, 
     data: {source: "abc"}, 
     success: function (response) { 
      jsonData = response; 
      var res = JSON.parse(JSON.stringify(jsonData)); 
      console.log(res);// 
     } 
    }); 

Hoffentlich kann dies helfen.