AJAX communications - GeoRemindMe/GeoRemindMe_Web GitHub Wiki

Las URLs para AJAX seguirán el siguiente esquema:

/ajax/<action>/<object>/

De forma que creemos un esquema consistente y claro, ahora mismo sólo hay las siguientes URLs definidas:

/ajax/edit/reminder/

/ajax/add/reminder/

/ajax/get/reminder/

/ajax/delete/reminder/

Ahora explico el uso de cada una de las URLS, todas las peticiones se hacen con POST:

URL: /ajax/edit/reminder/

Editas un recordatorio, tienes que subir los siguientes campos: id: entero name: cadena address: cadena ends_month: entero ends_day: entero ends_year: entero starts_month: entero starts_day: entero starts_year: entero description: cadena distance: entero active: checkbox done: checkbox

Si todo es correcto NO devuelvo nada, tienes que capturar la respuesta con success.

En caso de que de un error te devuelvo un diccionario donde para campo incorrecto tiene como valor una lista con los errores:

{'sender': ['Enter a valid e-mail address.'], 'subject': ['This field is required.']}

URL: /ajax/add/reminder/

El envío es igual que el anterior, salvo que no envías el id.

La respuesta de error es igual y la de éxito devuelve {'id': 'nuevoid'}.

URL: /ajax/delete/reminder/

Aquí tienes que enviar el ID a eliminar, si todo correcto success no devuelve nada, en caso de error devuelve un mensaje de error, ignoralo y alerta de que no se ha podido eliminar.

URL: /ajax/get/reminder/

Aquí tienes que enviar el ID a obtener, en caso de que no lo indiques obtendrás todas las alertas.

Para filtrar por hechas o no, pasa el parámetro "done" a "true" o "false" según te interese, la capitalización es ignorada.

Las peticiones AJAX las tienes que hacer de la siguiente manera:

$.ajax({
   url: URL,
   data: datos_a_enviar_como_diccionario,
   method: "POST",
   dataType: 'json',
   success: function(data) { // data es un diccionario parseado JSON } ,
   error: function(data) { // data es un diccionario parseado JSON } 
});

Y aquí tienes un código de ejemplo de alertas:

[{"distance": 0, "ends": "None", "name": "123123", "starts": "None", "id": "1", "y": -3.5979290000000002, "x": 37.176487000000002, "description": ""},
{"distance": 0, "ends": "None", "name": "bla", "starts": "None", "id": "2", "y": -3.5979290000000002, "x": 37.176487000000002, "description": ""},
{"distance": 1000000000, "ends": "None", "name": "PRUEBA", "starts": "None", "id": "3", "y": -3.5979290000000002, "x": 37.176487000000002, "description": ""}]

Como ves, las alertas vienen en un array, para parsearlas en un diccionario simplemente utiliza esta función:

function reparseAlerts(arr)
{
	ret = {};
	for (var i in arr)
	{
		ret[parseInt(arr[i].id)] = {};
		for (var v in alert)
		{
			ret[parseInt(arr[i].id)][v] = alert[v];
		}
	}
	return ret;
}

Así podrás acceder a cada alerta de la forma;

alerts = reparseAlerts(arr);

alerts[id] Accedes a la alerta id.

Además, las ids son globales al sistema no específicas para cada usuario.

⚠️ **GitHub.com Fallback** ⚠️