AJAX - Duda Archivos JSONP

   
Vista:

Duda Archivos JSONP

Publicado por Julia (2 intervenciones) el 22/08/2014 13:43:11
Hola amigos,

Estoy empezando a familiarizarme con el uso de archivos json, y a la hora de crear una app me ha surgido una duda que no se como puedo resolver, espero que vosotros me ayudéis.

Desde mi app tengo que hacer un request con Ajax a una url (ejemplo: http://www.lawebdelprogramador.com/programadores/ )para poder parsear su html y obtener algunos datos de ella, todo desde el lado del cliente. El problema que me encuentro es el Cross Domain y he leído que con archivos jsonp puedo solucionarlo. Mi problema viene al usar este tipo de archivos, ya que no se como se usan.

¿Podríais darme algún ejemplo? Muchas Gracias.

El request de Ajax que me da problemas de cross domain es asi:

$.ajax({type: 'GET',
crossDomain: true,
url: 'http://www.lawebdelprogramador.com/programadores/',
dataType: "html",
success: function(data) {
//aqui es donde parseo el html
},
error: function() { alert('Error!'); }

})
;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Duda Archivos JSONP

Publicado por xve (167 intervenciones) el 22/08/2014 21:13:20
Hola Julia, este ejemplo, esta bien, pero el servidor que recibe dicha petición, te tiene que devolver el resultado para jsonp... por lo menos así es como yo lo entiendo... voy a ponerte un ejemplo, haber si así se entiende bien.

Tenemos en una pagina html este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script>
 
    <script>
    function iniciar()
    {
		$.ajax({
			url:"http://otroservidor.com/jsonp.php?callbackjsonp=mifuncion",
			dataType: "jsonp",
		});
	}
 
	function mifuncion(data)
	{
		document.getElementById("resultado").innerHTML=data.nombre+" "+data.apellido;
	}
	</script>
</head>
 
<body>
 
<input type="button" value="Iniciar peticion jsonp" onclick="iniciar()">
<div id="resultado"></div>
 
</body>
</html>

y en http://otroservidor.com/ disponemos del archivo jsonp.php que tiene un contenido como:
1
2
3
4
<?php
$arr = array("nombre"=>"pepe", "apellido"=>"sanchez");
echo $_GET['callbackjsonp']."(".json_encode($arr).");";
?>


Fíjate, que la llamada la hacemos a un servidor remoto con jsonp, y pasamos como parámetro el nombre de la función que queremos que ejecute el resultado que nos devuelva el otro servidor.
En el archivo json.php, lo que devolvemos es una llamada a la función que hemos recibido como parámetro, pasando-le un json con los valores.
El código HTML, ya tiene creada la función mifuncion() que recogerá los datos recibidos por json.


Espero que te sirva, y que me haya sabido explicar... ya nos comentarás...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Archivos JSONP

Publicado por Julia (2 intervenciones) el 25/08/2014 10:51:35
Muchas gracias!

El ejemplo ha sido de gran ayuda, consigo leer archivos jsonp!!

Otra duda que me surge en base a lo anterior: Hay algunos archivos json que no puedo leerlos, cuando hago el request a su dominio me da error! sin embargo, si copio la url directamente en el navegador, lo que me sale es una descarga en la que se encuentra el archivo json que yo quiero.

Mi duda es, como puedo leer archivos json que previamente se tienen que descargar para leerlos?

Espero haberme explicado bien...

Un Saludo y gracias por la ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Duda Archivos JSONP

Publicado por xve (167 intervenciones) el 25/08/2014 22:43:41
Hola Julia, no te entiendo muy bien a que te refieres, nos puedes mostrar alguna de estas url que no te funcionan?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar