Paeonia: AJAX-request korrekt formulieren und per JSON.parse auswerten

Beitrag lesen

Hallo zusammen,

ich habe ein Problem, ein per AJAX zurückgegebenes JSON-Objekt zu verwenden.

das script http://domain/mmpbasicfunctions.php?user=RfGB2Yy&gruppe=1&toget=flaglink gibt die Ausgabe, die ich per copy&paste zum Testen in die Variable oopsv übertrage

globale Variable MMP.flagopt wird vorher gesetzt.

console.log("vorher:");  
console.log(MMP.flagopt);  //Ausgabe [] -> korrekt  
var oopsv = '{"cell":{"flaglink":"http:\/\/anderedomain\/users\/flag50.png","flagshadowlink":"http:\/\/anderedomain\/users\/flagsh50.png","flagoffsetx":"30","flagoffsety":"-55","flagshadowoffsetx":"0","flagshadowoffsety":"-42"}}';  
  
function setFlagLink (){  
	JSON.parse(oopsv, function (key, value) {  
	    var type;  
	    if (value && typeof value === 'object') {  
		type = value.type;  
		if (typeof type === 'string' && typeof window[type] === 'function') {  
		    return new (window[type])(value);  
		}  
	    }  
	    MMP.flagopt.push(value);  
	});  
};  
function setNOFlagLink() {alert("Keine Antwort!")};  
var oops=setFlagLink(oopsv);  
console.log("nachher:");  
console.log(MMP.flagopt); 
~~~// Ausgabe korrekt -> ["http://anderedomain/users/flag50.png", "http://anderedomain/users/flagsh50.png", "30", "-55", "0", "-42", Object {}, Object {}]  
  
Wenn ich aber die Variable per AJAX anfordere, dann habe ich nachher keine Änderung des Arrays MMP.flagopt  
  
~~~javascript
console.log("vorher:");  
console.log(MMP.flagopt); //Ausgabe [] -> korrekt  
var oopsv = OpenLayers.loadURL(  
				"http://domain/mmpbasicfunctions.php?user=RfGB2Yy&gruppe=1&toget=flaglink",  
				'',	  
				this,  
				setFlagLink,  
				setNOFlagLink	  
);  
console.log("oopsv:");  
console.log(oopsv); //Ausgabe -> fXMLHttpRequest { _object=XMLHttpRequest, _lis   ... responseText wie oben}  
function setFlagLink (response){  
	JSON.parse(response, function (key, value) {  
	    var type;  
	    if (value && typeof value === 'object') {  
		type = value.type;  
		if (typeof type === 'string' && typeof window[type] === 'function') {  
		    return new (window[type])(value);  
		}  
	    }  
	    MMP.flagopt.push(value);  
	});  
};  
function setNOFlagLink(oopsv) {alert("Keine Antwort!")};  
//var oops=setFlagLink(oopsv);  
console.log("nachher:");  
console.log(MMP.flagopt);
~~~//Ausgabe [] -> FALSCH  
  
Ich weiß nicht, welches Problem ich hier habe: CrossSiteScripting, fehlende oder falsche Variablenübergabe?  
  
Es wäre nett, wenn mir jemand weiterhelfen könnte.  
  
Gruß von Paeonia