2016-04-25 12 views
1

Ich nehme eine Reihe von Eingaben vom Benutzer in HTML, die ich dann an Ajax-Abfrage weiterleiten, um die Antwort zu erhalten.Ajax GET Anfrage arbeitet nicht mit Flask

$.ajax({ 
    url:"http://0.0.0.0:8080/getReport", 
    type:"GET", 
    data:JSON.stringify(out), 
    dataType:"json", 
    contentType:"application/json" 
}) 

Hier ist der Flask-Code, der die obige Anfrage erfüllt.

Die obige Methode ist nicht in der Lage, die Route zum 'Bericht' mit get zu finden. Es ist jedoch in der Lage, es in POST-Anfrage zu finden.

Dies ist das Protokoll, das ich

127.0.0.1 - - [25/Apr/2016 13:00:03] "GET /getReport?{%22insertion_id%22:%22%22,%22start%22:%22%22,%22end%22:%22%22} HTTP/1.1" 400 - 

Bad Request bin immer .. Was ich hier falsch mache?

+0

Sie verwenden 'JSON' als URL-Parameter, warum? – dm295

+0

Ich glaube nicht, Flask akzeptiert JSON-Daten vom Client. Sie sollten Daten als urlencodiert senden, wie 'data: {'key': 'val',}'. Sie müssen die Optionen "dataType" und "contentType" nicht festlegen. – xyres

+0

Sie sollten Formulardaten serialisieren und den dataType oder contentType nicht angeben. Senden Sie über und es sollte gut funktionieren. – tadamhicks

Antwort

3

Eine Anforderung GET hat keine contentType(*) und es ist nicht JSON-codiert ist, aber URL-codierte (Normalpapier, ein Schlüssel-Wert-Paare).

Dies bedeutet, dass Sie einfach mit jQuery Standard gehen können.

$.get("http://0.0.0.0:8080/getReport", out).done(function (data) { 
    // request finished 
}); 

, die wie in einem Antrag führen:

GET /getReport?insertion_id=&start=&end= HTTP/1.1 

Dies wird leicht vom Server verstanden werden.


(*) Das ist, weil die Content-Type Header den Typ des Anforderungs Körper bestimmt. GET-Anfragen haben keinen Anfragetext.

+0

Danke !! Es hat mir in meinem Verständnis geholfen! – mousecoder