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