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,

code=JavaScript

oder wenn du Code per Icon auswählst erhältst du im Modalfenster auch ein Dropdown mit den zur Verfügung stehenden Sprachen.

Grüße
 
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
 

Neue Beiträge

Zurück