jquery ajax data zeigt [object Object]

Lesezeit: 3 Minuten

Benutzer-Avatar
Tauhid

Ich habe einen sehr einfachen Ajax-Aufruf, um die vom Server gemeldeten Daten zu warnen

$.ajax({
       type: "POST",
       url: "/someform/act", //edit utl to url
       data: { changed: JSON.stringify(plainData) }, //edit to include
       success: function(data) {
          alert(data);             //data not $data
       },
       error: function() {
          //error condition code
       }
});

Laut dem Dokumente Auf der jquery-Website in Bezug auf das Datenfeld beim Erfolgsrückruf heißt es, dass die zurückgegebenen Daten die Daten vom Server sind. Allerdings aus irgendeinem seltsamen Grund, wenn ich alarmiere $dataIch bekomme [object Object]

Ich hatte so etwas erwartet, da der Server das zurücksenden würde

<status>0</status>

BEARBEITEN:

Daten werden auch als POST weitergegeben

  • Was bekommen Sie, wenn Sie verwenden alert(data);?

    – Felix Klinge

    5. August 2013 um 16:24 Uhr

  • Der Server hat XML zurückgesendet, jQuery hat dann besagtes XML geparst. Was Sie haben, ist ein XML-Dokument. Versuchen console.log(data)

    – Kevin B

    5. August 2013 um 16:24 Uhr


  • Ich bekomme success wenn ich Daten alarmiere

    – Tauhid

    5. August 2013 um 16:27 Uhr

  • Dann gibt Ihr Server nicht das zurück, was Sie denken, oder das Problem liegt an etwas, das nicht in Ihrem obigen Code enthalten ist.

    – Kevin B

    5. August 2013 um 16:33 Uhr


  • Ich bin mir nicht sicher, ob das die Ursache war, aber ich habe den obigen Code geändert, um meinen Code widerzuspiegeln

    – Tauhid

    5. August 2013 um 16:40 Uhr

Sie müssen verwenden JSON.stringify(data) in dem alert um etwas lesbares zu bekommen.

Ebenfalls, $data ist ein ganz anderer Variablenname als data.

  • Nicht wirklich, es kommt darauf an, was data ist. Vielleicht ist es schon ein String.

    – Felix Klinge

    5. August 2013 um 16:23 Uhr

  • Ich bekomme success als Antwort zurück. Ich hatte gehofft, das XML vom Server zurückzubekommen

    – Tauhid

    5. August 2013 um 16:23 Uhr

  • Ich bekomme {"0":{},"length":1}

    – Anonymer Benutzer

    12. April um 3:51

alert() druckt die Zeichenfolgendarstellung der Argumente – wenn Sie also ein Objekt übergeben, erhalten Sie [object Object].

Um Daten zu untersuchen, verwenden Sie console.log(data) besser.

Benutzer-Avatar
L105

Wenn Ihr Server ein JSON sendet, müssen Sie setzen dataType: 'json' zu Ihrem Ajax-Aufruf. Beachten Sie, dass Ihr Ajax-Aufruf einen Fehler enthält.

        $.ajax({
               type: "POST",
               url: "/someform/act", // NOT 'UTL',
               data: {
                  key: value,
                  key2: value2
               },
               // or data: plaindata, // If 'plaindata' is an object.
               dataType: 'json',
               success: function(data) {
                  console.log(data); // As moonwave99 said
               },
               error: function() {
                  //error condition code
               }
        });

BEARBEITEN

Beim Senden von Daten sollten Sie ein Objekt senden. jQuery verarbeitet das Array, um es an den Server zu senden. Wenn also einfache Daten ein Objekt sind, sollte es so sein

               data: plainData,

Wenn Sie Daten per senden $.ajax({...})wird möglicherweise die Registerkarte Netzwerk Ihres Browser-Inspektors angezeigt [object Object] in dem Payload (Chrom) / Request (Firefox) Unterregisterkarte, wie im folgenden Bild (Firefox):

Geben Sie hier die Bildbeschreibung ein

Der Grund dafür könnte in der Art und Weise liegen, wie Sie Ihren AJAX-Aufruf bilden. Speziell:

$.ajax({
  url: '/ajax/example-endpoint',
  data: {'fooKey':fooData,'barKey':barData},
  type: 'post',
  cache: false,
  contentType: false, // this one will turn your data into something like fooKey=fooData&barKey=barData
  processData: false, // and this one will make it [object Object]:""
  beforeSend: function() {
    // whatever it is you need to do
  },
  success: function(data) {
    // do stuff
  },
  error: function(desc, err) {
    // do stuff
  }
});

Wenn kombiniert, contentType: false und processData: false verwandeln Sie Ihre Daten in [object Object]weil Sie Ihrem AJAX-Aufruf tatsächlich sagen, dass er den Inhaltstyp von allem, was gesendet wird, ignorieren und nicht verarbeiten soll.

Wenn es sich um IIS handelt, versuchen Sie, eine Site außerhalb der Standardwebsite zu erstellen (z. B. localhost/ajax1). Platzieren Sie zum Beispiel eine neue Site ajax1 nicht im DefaultAppPool, sondern in Ihrem Pool, zum Beispiel ajax1. Versuchen Sie http://ajax1

  • Ich bin mir nicht sicher, wie dies für die Frage von OP relevant ist.

    – Julia

    8. März 2021 um 15:21 Uhr

  • Ich habe die gleiche Nachricht erhalten, Objekt Objekt.

    – Yurayurayura

    9. März 2021 um 16:47 Uhr

  • Ich bin mir nicht sicher, wie dies für die Frage von OP relevant ist.

    – Julia

    8. März 2021 um 15:21 Uhr

  • Ich habe die gleiche Nachricht erhalten, Objekt Objekt.

    – Yurayurayura

    9. März 2021 um 16:47 Uhr

1145650cookie-checkjquery ajax data zeigt [object Object]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy