Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Lerr Json de mi web

Estas en el tema de Lerr Json de mi web en el foro de Frameworks JS en Foros del Web. Hola, Esto realmente me ha dado dolores de cabeza, resulta que quiero lleer un .php que esta en mi web, este archivo me retorna un ...
  #1 (permalink)  
Antiguo 29/03/2013, 13:11
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Lerr Json de mi web

Hola,

Esto realmente me ha dado dolores de cabeza, resulta que quiero lleer un .php que esta en mi web, este archivo me retorna un JSON según los GET que este mandando.

Este código lo tengo en "otra"web

Código HTML:
		$.ajax({
			url: "http://xxxxxxxxxxxxxxx.com/service/tweet.php?op=tcuenta&item=lacuentab&callback=?",
			dataType: 'jsonp',
			success: function(info){
			console.log('Entro....');
				console.log(info);
			}, error :function(data){
			console.log('Error ....');
				console.log(data.success);
			}
		});
y este es el PHP que tengo en mi web.

Código PHP:
header('Content-Type: application/json');

echo 
"[".json_encode(array("no"=>"encontrado"))."]"

Algo tan simple como esto no me funciona.

Que puede ser??
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #2 (permalink)  
Antiguo 31/03/2013, 12:05
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Lerr Json de mi web

Para que JSONP funcione, tu PHP tiene que tener esta forma:

Código PHP:
Ver original
  1. <?php
  2.     $array = array("no"=>"encontrado");
  3.     if(isset($_GET['callback'])){
  4.         echo $_GET['callback'].'('.json_encode($array).')';
  5.     }
  6.      else
  7.     {
  8.         echo json_encode($array);
  9.     }
  10. ?>

JSONP funciona porque la cadena JSON es devuelta envuelta en una función "callback". Si realizas una llamada a AJAX a otro servidor, da un error de CROSS-DOMAIN. El truco de JSONP es llamar a otro servidor como si recuperaras un SCRIPT de javascript con

<script src="http://otro.servidor.com" type="text/javascript"></script>

Esa ruta puede ser perfectamente un PHP, pero lo que debe generar es un código javascript que tenga esta forma:

Código Javascript:
Ver original
  1. mi_funcion_callback( {"array":[1,2,3,4], "variable":"valor1"});

La implementación de dicha función estará la página que quiere llamar por AJAX a otro servidor mediante JSONP, lo único que tienes que saber es que te devolverán un objeto JSON donde están contenidos los datos.
Asi que como ves, ¿Cómo sabe el servidor externo cómo se llama la función con la que debe envolver la cadena JSON (En este ejemplo, mi_funcion_callback)?

Pues enviándosela también porGET en la url así:

<script src="http://otro.servidor.com?callback=mi_funcion_callback" type="text/javascript"></script>

Esto lo hace JQUERY por tí cuando le pones el dataype JSONP al jquery.ajax. Dicha variable en jquery se llama "callback", y la envía por la URL, así que por eso en el primer PHP estamos recogiendo un $_GET["callback"] para envolver el json_encode.

Etiquetas: ajax, funcion, js, json, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:54.