two - wrap image in div jquery
¿Cómo puedo usar los datos publicados desde ajax en el matraz? (4)
Tengo problemas para obtener datos PUBLICADOS desde jquery ajax.
$(''#clickme'').click( function() {
var data = save_input(); // data
data[''_sid''] = $survey_id; // survey_id injected from flask
data[''_uip''] = $user_ip; // user_ip injected from flask, request.remote_addr
$.ajax({
type : "POST",
url : "{{ url_for(''mod.load_ajax'') }}",
data: JSON.stringify(data),
contentType: ''application/json;charset=UTF-8'',
success: function(result) {
console.log(result);
}
});
console.log(data);
});
desde el código, los data
son un objeto javascript como
{
''foo'' : ''foo'',
''bar'' : ''bar'',
''fo_'' : 42,
}
Lo que trato de hacer en un matraz es:
@mod.route(''/load_ajax'', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
# load _sid and _uip from posted JSON and save other data
# but request.form is empty.
# >>> request.form
# ImmutableMultiDict([])
return str(request.form)
mira, se realiza la solicitud de ajax pero no se envían datos. Hago console.log(data)
con ajax para poder ver que realmente tengo algunos datos significativos en data
variable de data
en jquery. pero request.form en ajax view está vacío. ¿Dónde se envían mis datos?
¿Has probado eliminar contentType? Usted supone publicar datos en Flask.
podrías intentar agregar datos falsos como
datos: {"hello": "world"} dentro de ajax? solo para verificar si el hello world llega a request.form
En el lado del matraz, use:
data = request.get_json()
Los datos variables ahora tienen el diccionario que enviaste usando ajax y ahora puedes manipularlo con python
Según su ejemplo, no está enviando un par de valores clave, sino que asigna una cadena JSON a la opción de datos jQuery. Como se menciona en los comentarios, debe enhebrar su JSON, crear un objeto con una clave (que se usará para acceder a la cadena JSON desde el matraz) y luego asignarlo a la clave de datos jQuery.
$.ajax({
type : "POST",
url : "{{ url_for(''mod.load_ajax'') }}",
data: {json_str: JSON.stringify(data)},
contentType: ''application/json;charset=UTF-8'',
success: function(result) {
console.log(result);
}
});
@mod.route(''/load_ajax'', methods=["GET", "POST"])
def load_ajax():
if request.method == "POST":
# load _sid and _uip from posted JSON and save other data
# but request.form is empty.
# >>> request.form
# ImmutableMultiDict([])
return str(request.form[''json_str'']
)
Tratar
$.ajax({
type : "POST",
url : "{{ url_for(''mod.load_ajax'') }}",
data: JSON.stringify(data, null, ''/t''),
contentType: ''application/json;charset=UTF-8'',
success: function(result) {
console.log(result);
}
});
Luego, desde el servidor, puede consultar las variables en datos como este:
request.json[''foo'']
Dado que el tipo de contenido se especifica como application/json
los datos están en request.json