JavaScript json object ausgeben?

SourceCoder

Lt. Commander
Registriert
Apr. 2012
Beiträge
1.564
Schönen guten Tag Zusammen,

ich brauche mal bei einem kleinen Fehler eure Hilfe, und zwar bekomme ich es nicht hin ein json object auszugeben.
Meine Frage wieso bekomme ich bei alert(newCustomers) nicht den Wert angezeigt?

Mein Code:

Code:
var customers = [ {
	'id' : '',
	'UserName' : '',
	'UserPasswort' : '',

} ];

function getCustomers() {
	// This method is automatically generated. Don't modify it.
	jQuery.mobile.showPageLoadingMsg('Loading');
	$.ajax({
		url : gatewayURL + '/customers',
		cache : false,
		type: 'GET', 
		success : function(data, status, xhr) {
			jQuery.mobile.hidePageLoadingMsg();
			onGetCustomers(data);
		}
	});
}


function onGetCustomers(response) {
	customers = response;

	var newCustomers = '';
	$.each(customers, function(index, item) {
		newCustomers += ' Ausgabe: ' + item.UserPW;
	});
	alert(newCustomers); // Ausgabe: undefined 
	alert(JSON.stringify(customers)); //"[{\"id\":\"1\",\"UserName\":\"Max\",\"UserPW\":\"xxxx\"}]" gibt er aus
}
 
Hi,

lass dir mal direkt per "console.log(response)" in deiner "onGetCustomers"-Methode anzeigen was in der Response steht.

VG,
Mad
 
[{"id":"1","UserName":"Max","UserPW":"xxxx"}]

Wie oben gepostet.
 
Ich kann den Fehler leider nicht nachvollziehen - wenn ich den customers-String als Eingabe benutze, dann klappt es bei mir:

Code:
var responseAsString = "[{\"id\":\"1\",\"UserName\":\"Max\",\"UserPW\":\"xxxx\"}]",
    customers = JSON.parse(responseAsString);
 
var newCustomers = '';
$.each(customers, function(index, item) {
    newCustomers += ' Ausgabe: ' + item.UserPW;
});
console.log(newCustomers); // Ausgabe: xxxx
console.log(JSON.stringify(customers));

Mach mal in die anonyme Funktion bei each() noch so etwas rein wie
Code:
console.log("Element: ", item);
Wenn da das Richtige erscheint, dann liegt das Problem an der Variable newCustomers, ansonsten liegt es am each() selbst.

Ach ja, console.log ist ein um Längen besseres Debug-Werkzeug als alert. Du benutzt doch die Entwicklertools deines Browsers, oder? ;)
 
Bei console.log("Element: ", item); bekomme ich das hier:

Code:
Element: 

[
my.js (Zeile 42)

Element: 

{
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

i
my.js (Zeile 42)

Element: 

d
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

:
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

1
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

,
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

U
my.js (Zeile 42)

Element: 

s
my.js (Zeile 42)

Element: 

e
my.js (Zeile 42)

Element: 

r
my.js (Zeile 42)

Element: 

N
my.js (Zeile 42)

Element: 

a
my.js (Zeile 42)

Element: 

m
my.js (Zeile 42)

Element: 

e
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

:
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

M
my.js (Zeile 42)

Element: 

a
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

,
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

U
my.js (Zeile 42)

Element: 

s
my.js (Zeile 42)

Element: 

e
my.js (Zeile 42)

Element: 

r
my.js (Zeile 42)

Element: 

P
my.js (Zeile 42)

Element: 

W
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

:
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

x
my.js (Zeile 42)

Element: 

"
my.js (Zeile 42)

Element: 

}
my.js (Zeile 42)

Element: 

]

Wenn ich aber console.log("Element: ", item.UserPW); verwende dann wieder nur Element: undefined.
Ich verwende Firebug in Firefox, alert schreibe ich nur noch aus Gewohnheit ^^.
 
Hi,

mach bitte einfach mal ein "console.log(item)" da rein. So wie sich das liest splittet der da einen String und nicht ein Object / Array, das wird der Fehler sein. In deiner Ausgabe steht ja Zeile für Zeile ein Buchstabe des Strings drin... "id", "username" usw...

VG,
Mad

Edit: Bitte mal testen: customers = response; bitte ändern in customers = JSON.parse(response); Das ist der Fehler ;)
 
Zuletzt bearbeitet:
Ja wie es aussieht splittet wirklich, aber wie kann das den sein data/response ist doch ein object.
 
Setz mal in deinem ajax()-Aufruf noch ein "dataType: json", ich vermute, dann geht's :)

Edit: Ist es das wirklich? Lass es dir zur Sicherheit noch mal ausgeben...
 
NullPointer schrieb:
Setz mal in deinem ajax()-Aufruf noch ein "dataType: json", ich vermute, dann geht's :)

Edit: Ist es das wirklich? Lass es dir zur Sicherheit noch mal ausgeben...

Das ist die Lösung gewesen, danke.
 
Zurück
Oben