Skip to content

Instantly share code, notes, and snippets.

@fmagrosoto
Last active January 22, 2016 02:37
Show Gist options
  • Save fmagrosoto/d992d7c8df3b7ec642a5 to your computer and use it in GitHub Desktop.
Save fmagrosoto/d992d7c8df3b7ec642a5 to your computer and use it in GitHub Desktop.
Uso de JSONP con jQuery
// Se trata de usar una llamada a AJAX a través
// de Dominios diferentes (Cross Domain)
// y con una petición JSON para extraer información
// de una base de datos (por ejemplo MySQL).
/**
* FUNCIÓN ANÓNIMA PARA HACER LA LLAMADA Y EXTRAER INFORMACIÓN
* @author Fernando Magrosoto V. (@fmagrosoto)
* @version 1.0
* @returns {void} Sin valores devueltos
* /
$(function(){
// Llamada a AJAX
$.ajax({
type: 'GET',
url: '//api.otrodominio.com.mx/registros/',
data: {
'categoria':'calzado'
},
dataType: 'jsonp', // Esta es la configuración y llamada a un JSON Cross Domain
crossDomain: true // Ponemos TRUE para hacer que dataType envíe el callback
})
// En caso favorable, extraer la información
// de la respuesta de AJAX
.done( function(respuesta) {
var miData = respuesta[0]; // Esta es la información extraída de la base de datos
// Recorremos la información
$.each(miData, function(x,v) {
// x = Valor de la iteración
// v = Conjunto de datos por cada iteración
// Imprimir en consola el campo TOKEN de cada conjunto de datos
console.info( v.token );
});
})
// En caso de error, mostrar el error en la consola
.fail( function(error) {
console.error( error );
});
});
// EOF
<?php
## Este es un ejemplo muy básico de un intento de API ##
// Conexión a Base de datos y setear el charset a UTF8
require_once 'class_OpenBD.php';
$con = new class_conXion();
$link = $con->getLink();
mysqli_set_charset($link,'utf8');
// Recuperar el valor GET enviado desde AJAX
$categoria = filter_input(INPUT_GET, 'categoria',FILTER_VALIDATE_INT);
// Hacer un query de MySQL
$query = "SELECT token,producto,cantidad FROM tabla_de_productos WHERE categoria = '$categoria' ";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
// Array vacío para popularlo después
$salida = array();
$i = 0; // Iteración
while($data = mysqli_fetch_assoc($result)):
$salida[$i] = $data; // Ponemos los datos en cada elemento del array
$i++; // Incrementamos la iteración
endwhile;
// Encabezado para indicarle que se trata de un JSON
header('Content-Type: application/json');
echo $_GET['callback']."([".json_encode($salida)."])";
// Usamos $_GET['callback'] que mandó jQUERY con la propiedad dataType
// y la tenemos que usar para devolver los datos.
// En realidad, ese es el todo el "chiste" del JSONP: enviar y devolver un callback
// EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment