Sul lato server, sto solo stampando la JSON-as-dizionario alla consoleFlask, come restituire un codice di stato di successo per la chiamata AJAX
@app.route('/',methods=['GET','POST'])
@login_required
def index():
if request.method == "POST":
print request.json.keys()
return "hello world"
Ora, ogni volta che faccio una richiesta POST via ajax, la console stampa il dizionario con i contenuti di cui ho bisogno.
Sul lato client, ho cercato di utilizzare vari metodi per eseguire jquery in base a una chiamata ajax di successo. Ho appena realizzato che questo potrebbe essere un errore sul mio lato server, cioè non sto inviando alcuna intestazione di richiesta per dire a jquery che la sua chiamata ajax è stata un successo.
Quindi, come posso inviare uno stato OK al mio cliente per dire che va tutto bene?
Per ragioni di completezza, ecco il mio codice lato client
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(myData),
dataType: 'json',
url: '/',
success: function() {
console.log("This is never getting printed!!")
}});
Hai provato a restituire una stringa JSON valida invece del semplice testo 'ciao mondo'? Si specifica che il tipo di dati di ritorno è json, ma jquery probabilmente non può decodificare "ciao mondo", quindi la funzione di successo non viene mai chiamata. –
@PeterGibson il "ciao mondo" viene restituito su una richiesta GET. Non restituisco nulla su POST. – yayu
@PeterGibson era davvero il problema. Ho messo un 'return 'OK'' e sta funzionando ora. Puoi inviare una risposta se vuoi. – yayu