Warum JSON.Parsen nicht funktioniert?
Habe ich den Datentyp 'text', weil ich nicht wollen, um Jquery Parsen mein JSON automatisch.
Mein code ist der folgende:
var membId = '5';
$('#submitNewDescription').live('click',function(){
//An ajax request is made to update the DB
$.ajax({
url: '../../cgi-bin/qualification.py',
type: 'POST',
data: ({newDescription:$('#newDescription').val(),id:membId}),
dataType: 'text',
cache: 'false',
success: function(data){
json = JSON.parse(data);
console.log(data);
console.log(json);
}
});
});
Und es gibt diese Zeichenfolge: {"error":["ORA-01031 Unzureichende Zugriffsrechte"]} in beiden Konsolen.log-Befehlen. Es bedeutet, dass das Parsen nicht funktioniert, da es nicht wieder ein JavaScript-Objekt. JSONLint sagt mir, dass ist ein gültiges JSON.
Jemand eine Idee, was ist passiert?
Dank
BEARBEITEN
Kann ich auf 'json', es ist kein problem. Das problem ist, dass JSON.analysieren und $.parseJSON funktionieren sollte. Da Sie nicht, ich änderte 'Datentyp' auf 'json', aber der gleiche string zurückgegeben. Ich habe keine Ahnung, was passiert ist.
- Warum willst du nicht jQuery Parsen der JSON automatisch?
- Wenn das parsing nicht erfolgreich,
json
würde nicht die Zeichenfolge enthalten, wäre aberundefined
. Es muss etwas anderes sein. Sicher, dassjson
ist nicht ein Objekt? Was bedeutettypeof json
geben Sie? Beachten Sie auch, dassjson
ist eine Globale variable (was es nicht sein sollte). - Welchen browser verwenden Sie ' r verwenden? Ich versuchte es mit ff3.6 es funktionierte perfekt. versuchen [link]jsfiddle.net/scheffield/URDBv
- Es ist lustig, wie einfach die Dinge sind, einige Zeit. Das problem war, dass. json war nicht eine Globale variable, die ich nur vergessen, es zu erklären. Und statt JS sagen mir, dass nicht definiert ist, es aber besser nicht parse.@Felix Kling
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich weil Sie suchen
$.parseJSON
statt? Auch ich beieve jQuery wird, die Daten betrachten und ein best-Vermutung an, analysieren es vor der übergabe ab, um den Rückruf. Also, wenn es aussieht wie JSON sind die Chancen jQuery ist bereits geben Sie ein JavaScript-Objekt zurück, welches dann nicht re-analysiert mitJSON.parse
/$.parseJSON
.Können Sie auch ändern Sie Ihre
dataType
Feld 'json', und lassen jQuery für Sie tun...ändern
dataType: 'text'
zudataType: "json"
und auchJSON.parse
zu$.parseJSON
Den
JSON
Bibliothek existiert nicht in allen Browsern. Sie benötigen könnten, um Ihre eigenen wie http://developer.yahoo.com/yui/json/Oder wie die anderen vorgeschlagen haben, verwenden Sie die jQuery ein. Vielleicht wollen Sie auch zu erklären
json
wievar json = ...
In meinem Fall, ich habe es wie folgt funktionieren:
Hinweis ich kann: Zugriff auf das json-Feld direkt in das response-Objekt