Ajax repsonse gibt: [Object object] zurück

messmar

Erfahrenes Mitglied
Guten Abend!

die folgende Funktion gibt mir an erster Stelle: [Object Object] und anschließend die benötigten Daten aus Json:

Code:
function doXML() {
  var url;
  var data = {};
   
  $.each($('#overLayTab tr').not('.gapTr, .hdlnGap, .trGreetings'), function() {
  data = data + $(this).find('td:nth-child(1)').text() + "'" + $(this).find('td:nth-child(2)').text() + "'" + ';';
  });
  alert('data: ' + data);
  console.log('OutPut: ' + data);
  url = 'createXml/generateXML.jsp';
  $.ajax({
  type: "POST",
  url: url,
  data: data,
  contentType: "application/json;charset=utf-8",
  dataType: "json"
  })
  .done(function() {
  alert( "success" );
  })
  .fail(function(data, status, error) {
  alert(data.responseText);
  })
  .always(function() {
  alert( "complete" );
  window.open(url, 'xml', 'width=500, height=700,scrollbars=yes,directories=no,menubar=no,toolbar=no,location=no');
  });
  };

Result über fireBug Console:

Code:
[object Object]2_Spalten : 'Ja';Schriftart: 'Arial, Helvetica, sans-serif';Schriftfarbe - Headline: '#ef8a1e';Schriftfarbe – Subheadline: '#ef8a1e';Schriftfarbe – Text: '#585b5d';Hintergrundfarbe: '#132748';Firmenlogo: 'http://www.placehold.it/208x100&text=Link-from-Footer-Firmenlogo_Link';Farbe Menüleiste: '#ffffff';Inhaltsverzeichnis (Hintergrund): '#132748';Inhaltsverzeichnis (Schriftfarbe): '#f5b978';Button/CTA Farbe: '#1569a7';Button/CTA Schriftfarbe: '#ffffff';Schriftfarbe Footer-Text: '#778190';Schriftfarbe Snippet-Text: '#ffffff';'';

Ich habe es mit:
Code:
data = JSON.stringify(data)
versucht, aber leider ohne Ergebniss ;-(

Tipp oder eine bessere Idee?

Vielen Dank & Gruß
Messmar
 
Hi,

sieht aus, als wolltest du in data ein Objekt erstellen wollen. Dazu solltest du dem Ausgangsobjekt immer key/value-Paare zuweisen:
Javascript:
$.each($('#overLayTab tr').not('.gapTr, .hdlnGap, .trGreetings'), function() {
    data[$(this).find('td:nth-child(1)').text()] = $(this).find('td:nth-child(2)').text();
});
Ein Objekt in dieser Form kann der ajax-Methode der data-Option übergeben werden.

Zu beachten: Sollten deine keys mit einem Doppelpunkt enden, solltest du diesen zunächst herausfiltern.

Ciao
Quaese
 
Guten Morgen!

vielen Dank schon mal.

Ich habe beide Varianten eingebettet, und gecheckt... folgender Syntax-Fehler kommt bie beiden raus:

Code:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
das könnte ich schon abfangen, bearbeiten und umgehen...

FireBug-Console als GET bei der zweiten Variante:

Code:
http://localhost:8080/xxxxx/configCmaster/createXml/xxx.jsp?temp=&2_Spalten=Ja&Schriftart=Arial%2C+Helvetica%2C+sans-serif&Schriftfarbe+-+Headline=%23ef8a1e&Schriftfarbe+%E2%80%93+Text=%23585b5d&&Schriftfarbe+Snippet-Text=%23ffffff&=

Params-Ausgabe via Firebug:
Code:
2_SpaltenJa
Button/CTA Schriftfarbe#ffffff
Button/CTA Farbe#1569a7
Farbe Menüleiste#ffffff
Firmenlogohttp://www.placehold.it/208x100&text=Link-from-Footer-Firmenlogo_Link
Hintergrundfarbe#132748
Inhaltsverzeichnis (Hinte...#132748
Inhaltsverzeichnis (Schri...#f5b978
SchriftartArial, Helvetica, sans-serif
Schriftfarbe - Headline#ef8a1e
Schriftfarbe Footer-Text#778190
Schriftfarbe Snippet-Text#ffffff
Schriftfarbe – Subheadlin...#ef8a1e
Schriftfarbe – Text#585b5d
temp

Mein Ziel ist es die Folgende z.B. Ausgabe zu erhalten:
Code:
data = { title:'xxxxxx',name: 'bbbbbb', city: 'cccccccc', state: 'dddddd', date: 'eeeeeee',duration:'ffffffff',pay:'gggggg',type: 'hhhhhhh' }

P.S. wie könnte ich den JavaScript-Code auch als solche hier posten.. mit nur: CODE, /CODE, wird es als Code(text) ausgegeben... in FAQ finde ich leider nichts...

Gruß
Messmar
 
Zuletzt bearbeitet:
Hi,

du solltest darauf achten, dass die Schlüsselwerte keine Sonderzeichen oder Whitespaces enthalten (/, Leerzeichen usw.). Eventuell müssen diese entfernt/ersetzt werden bevor das Objekt erstellt wird.

Ansonsten sollte die zweite Variante funktionieren, wenn du das Objekt später dem Ajax-Aufruf übergebe möchtest -> Variante 2.

Ciao
Quaese
 
Hi Quaese,

Exakt danke!

Ich die Daten via console ausgegeben:
Javascript:
beforeSend: function() {
  $.each(data, function(key, value) {
  console.log(key+ ':' + value);
  });
},

und ich erhalte genau, dass was Du auch via: "jsfiddle" gepostet/verlinkst hast:

2_Spalten:Ja
Schriftart:Arial
Schriftfarbe - Headline:#ef8a1e
Schriftfarbe – Subheadline:#ef8a1e
Schriftfarbe – Text:#585b5d
Hintergrundfarbe:#132748
Firmenlogo:http://xxxx.it/208x100&text=Link-from-Footer-Firmenlogo_Link
...

Ich mache mich schlau ;-)

Grüße
Messmar
 
Hallo zusammen,

bin jetzt dazu gekommen, aber der Syntax-Fehler lässt sich einfach nicht beheben...

Fehlermeldung via alert bei:

Javascript:
$.ajax({.....}).fail(function(data, status, error) {
  alert(error);
})

und via fireBug-Console, wenn ich:
Javascript:
$.parseJSON(data);
oder:
Javascript:
data = JSON.parse(data);

Code:
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
.

Ich mache irgendwas falsch, und/aber ich kann es einfach nicht lokalisieren... der Code lügt nicht ;-)

Für mehr Details sehe ich Anhang.

Danke für die Geduld und Gruß
Messmar
 

Anhänge

  • responseAndCo.jpg
    responseAndCo.jpg
    243,7 KB · Aufrufe: 8
Hi,

was steht auf data? Ist es das data, das zu für den Ajax-Request zusammenbaust oder das data aus der fail-Methode?

Vielleicht musst du die Wert noch URL-kodieren (encodeURIComponent):
Javascript:
$.each($('#overLayTab tr').not('.gapTr, .hdlnGap, .trGreetings'), function() {
    data[$(this).find('td:nth-child(1)').text()] = encodeURIComponent($(this).find('td:nth-child(2)').text());
});

Ansonsten wäre es interessant, wie dein derzeitiger Code aussieht, um es lokal nachstellen zu können.

Ciao
Quaese
 
Zurück