2016-05-26 9 views
0

Ich habe eine Ajax Post Anfrage, die einige Daten im Format von Array [Integer] ohne Parameter oder Schlüssel senden müssen. Leider hängt der Browser jedes Mal, wenn ich es versuche, auf Anfrage. Ich hatte Erfolg im Postboten und im Stolz, aber ich kann das Datenformat nicht herausfinden, das benötigt wird, um dieses keyless Feld gerade zu senden.Ajax Daten Methode

Hier ist meine Anfrage:

$.ajax({ 
     type: "POST", 
     url: "/endpoint?code=" + data, 
     data: [1], 
     success: function(response) { 
      console.log(response); 
     }.bind(this), 
     error: function(xhr, status, err) { 
      console.log(status + " " + err); 
     }.bind(this) 
    }); 

In meinem Swagger docs folgende Arbeiten

curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "[1]" "http://url/endpoint?code=testing" 

In Postbote, es wie die Formulardaten setzt den Array als Schlüssel ohne Wert sieht. Ich konnte dies im Browser umsetzen aber immer noch kein Glück.

Jede Hilfe wäre willkommen, es scheint wie eine einfache Frage beantwortet, aber ich kann keine Lösungen finden.

+0

Funktioniert das Angeben von Anführungszeichen um das Array, d. H. Das Übergeben einer Zeichenfolge anstelle eines Array-Literals? – metame

+1

Sie könnten auch 'JSON.stringify ([1])' 'verwenden, was eine bessere Lösung für Erweiterbarkeitsgründe wäre. – metame

+0

Meine Gedanken auch. Ich habe beides versucht und kein Glück. – user3225501

Antwort

0

Versuchen Sie Ihre Daten zu stringfying. Senden Sie "[1]"

+0

Leider funktioniert das auch nicht. In beiden Fällen, in denen ich keine Daten stringfe und stringfe, gibt mir Chrome provisorische Header und Formulardaten wie [1]: oder "[1]": beide Anfragen hängen auf – user3225501

0

Rufen Sie JSON.stringify auf, und geben Sie eine contentType Option an, um diesen Header anzugeben.

$.ajax({ 
    type: "POST", 
    url: "/endpoint?code=" + data, 
    data: JSON.stringify([1]), 
    contentType: 'application/json', 
    dataType: 'json', 
    success: function(response) { 
     console.log(response); 
    }.bind(this), 
    error: function(xhr, status, err) { 
     console.log(status + " " + err); 
    }.bind(this) 
}); 

BTW, statt .bind(this) auf jeder Callback-Funktion verwenden, können Sie die Option context: this es automatisch zu übergeben.

+0

Hey danke. Dies war nicht die richtige Antwort für mich, aber es führte dazu, dass ich die wahre Ursache des Problems herausfinden konnte. Ich übergebe die Streams von meinem eigenen Server zu einem anderen und übergebe die Antwort zurück. Irgendwo entlang der Linie versagt es. Ich werde etwas mehr untersuchen. – user3225501