{"id":312,"date":"2013-08-13T21:31:46","date_gmt":"2013-08-13T21:31:46","guid":{"rendered":"http:\/\/blog.luisrodriguez.pe\/?p=312"},"modified":"2013-10-04T19:23:35","modified_gmt":"2013-10-04T19:23:35","slug":"ajax-cross-domain-jsonp-con-php","status":"publish","type":"post","link":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/","title":{"rendered":"AJAX Cross-Domain: JSONP con  PHP"},"content":{"rendered":"<p>En ciertos proyectos es necesario poder obtener datos de otro servidor por AJAX pero el inconveniente de siempre que los navegadores por seguridad no lo permiten solo permiten los que est\u00e9n en el mismo servidor. JSONP \u00a0tambi\u00e9n conocido como JSON con Padding es una tecnica que permite obtener datos de servidores externos.<\/p>\n<p><strong>En que consiste esta\u00a0t\u00e9cnica?<\/strong><br \/>\nel json convertirlo en una funcion<br \/>\ncomo ya saben siempre soy mas practico que teorico.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span style=\"color: #006600; font-style: italic;\">\/*aqui temenos un json no tiene nada de ciencia*\/<\/span>\n<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #009900;\">&#123;<\/span><span style=\"color: #3366CC;\">&quot;respuesta&quot;<\/span><span style=\"color: #339933;\">:<\/span><span style=\"color: #3366CC;\">&quot;Validacion Correcta&quot;<\/span><span style=\"color: #339933;\">,<\/span><span style=\"color: #3366CC;\">&quot;validacion&quot;<\/span><span style=\"color: #339933;\">:<\/span><span style=\"color: #3366CC;\">&quot;ok&quot;<\/span><span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>con la tecnica JSONP<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span style=\"color: #006600; font-style: italic;\">\/*aqui temenos un json no tiene nada de ciencia*\/<\/span>\nCualQuierNombre<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #009900;\">&#123;<\/span><span style=\"color: #3366CC;\">&quot;respuesta&quot;<\/span><span style=\"color: #339933;\">:<\/span><span style=\"color: #3366CC;\">&quot;Validacion Correcta&quot;<\/span><span style=\"color: #339933;\">,<\/span><span style=\"color: #3366CC;\">&quot;validacion&quot;<\/span><span style=\"color: #339933;\">:<\/span><span style=\"color: #3366CC;\">&quot;ok&quot;<\/span><span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>Listo!<\/p>\n<p>Jquery ya nos da una funcion que simplifica las llamadas a ajax que nos devuelve un JSON<\/p>\n<p><strong><em>Bueno les pongo un ejemplo practico, tenemos en el dominio1.com un login y en dominio2.com tenemos la base de datos entonces desde el dominio2.com vamos a enviar un la data.<\/em><\/strong><\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"html\" style=\"font-family:monospace;\">&lt;script type=&quot;text\/javascript&quot; src=&quot;http:\/\/code.jquery.com\/jquery-1.9.1.js&quot;&gt;&lt;\/script&gt;&lt;script type=&quot;text\/javascript&quot; src=&quot;script.js&quot;&gt;&lt;\/script&gt;\r\n&lt;!--formulario de donde obtenemos los datos--&gt;\r\n&lt;form&gt;&lt; input id=&quot;username&quot; type=&quot;text&quot; \/&gt; &lt; input id=&quot;pass&quot; type=&quot;text&quot; \/&gt; &lt; input id=&quot;enviar&quot; type=&quot;button&quot; value=&quot;inicia sesion&quot; \/&gt;&lt;\/form&gt;<\/pre><\/td><\/tr><\/table><\/div>\n\n<p>script.js<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"javascript\" style=\"font-family:monospace;\">$<span style=\"color: #009900;\">&#40;<\/span>document<span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">ready<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">&#40;<\/span>e<span style=\"color: #009900;\">&#41;<\/span> <span style=\"color: #009900;\">&#123;<\/span> \n <span style=\"color: #006600; font-style: italic;\">\/*capturamos los datos al cliekar el boton enviar*\/<\/span>\n $<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #3366CC;\">&quot;#enviar&quot;<\/span><span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">on<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #3366CC;\">&quot;click&quot;<\/span><span style=\"color: #339933;\">,<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#123;<\/span>\n\t <span style=\"color: #006600; font-style: italic;\">\/*declaramos las variables del fromulario y la url que llamaremos*\/<\/span>\n\t <span style=\"color: #000066; font-weight: bold;\">var<\/span> username<span style=\"color: #339933;\">=<\/span>$<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #3366CC;\">&quot;#username&quot;<\/span><span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">val<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n\t <span style=\"color: #000066; font-weight: bold;\">var<\/span> pass<span style=\"color: #339933;\">=<\/span>$<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #3366CC;\">&quot;#pass&quot;<\/span><span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">val<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n\t <span style=\"color: #000066; font-weight: bold;\">var<\/span> url <span style=\"color: #339933;\">=<\/span> <span style=\"color: #3366CC;\">&quot;http:\/\/luisrodriguez.pe\/demos\/scripts\/jsonp\/login.php?jsoncallback=?&quot;<\/span><span style=\"color: #339933;\">;<\/span> \n\t <span style=\"color: #006600; font-style: italic;\">\/\/hacermos el llamado a la url externa y enviamos 2 ger usuario y password que luego en el php login los <\/span>\n         <span style=\"color: #006600; font-style: italic;\">\/\/capturamos para hacer la comprobacion si los datos enviados existen en la base de datos, pero en este<\/span>\n         <span style=\"color: #006600; font-style: italic;\">\/\/ ejemplo solo estaran en duro<\/span>\n\t $.<span style=\"color: #660066;\">getJSON<\/span><span style=\"color: #009900;\">&#40;<\/span>url<span style=\"color: #339933;\">,<\/span><span style=\"color: #009900;\">&#123;<\/span>usuario<span style=\"color: #339933;\">:<\/span>username <span style=\"color: #339933;\">,<\/span>password<span style=\"color: #339933;\">:<\/span>pass<span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">done<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">&#40;<\/span>data<span style=\"color: #009900;\">&#41;<\/span> <span style=\"color: #009900;\">&#123;<\/span> \n     console.<span style=\"color: #660066;\">log<\/span><span style=\"color: #009900;\">&#40;<\/span>data.<span style=\"color: #660066;\">respuesta<\/span> <span style=\"color: #339933;\">+<\/span> <span style=\"color: #3366CC;\">' '<\/span><span style=\"color: #339933;\">+<\/span> data.<span style=\"color: #660066;\">validacion<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n  <span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span>.<span style=\"color: #660066;\">fail<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">&#40;<\/span> jqxhr<span style=\"color: #339933;\">,<\/span> textStatus<span style=\"color: #339933;\">,<\/span> error <span style=\"color: #009900;\">&#41;<\/span> <span style=\"color: #009900;\">&#123;<\/span>\n  <span style=\"color: #000066; font-weight: bold;\">var<\/span> err <span style=\"color: #339933;\">=<\/span> textStatus <span style=\"color: #339933;\">+<\/span> <span style=\"color: #3366CC;\">', '<\/span> <span style=\"color: #339933;\">+<\/span> error<span style=\"color: #339933;\">;<\/span>\n  console.<span style=\"color: #660066;\">log<\/span><span style=\"color: #009900;\">&#40;<\/span> <span style=\"color: #3366CC;\">&quot;Request Failed: &quot;<\/span> <span style=\"color: #339933;\">+<\/span> err<span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\t \n&nbsp;\n <span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span>\n&nbsp;\n<span style=\"color: #009900;\">&#125;<\/span><span style=\"color: #009900;\">&#41;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>login.php<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #666666; font-style: italic;\">\/\/capturamos los datos enviamos<\/span>\n<span style=\"color: #000088;\">$user<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">addslashes<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #990000;\">trim<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;usuario&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #000088;\">$pass<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">addslashes<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #990000;\">trim<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;password&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/comprobamos los datos enviados son los sigueintes esta en duro<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/pero claro que podrian hacerlo con base de datos<\/span>\n<span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$user<\/span><span style=\"color: #339933;\">==<\/span><span style=\"color: #0000ff;\">&quot;root&quot;<\/span> and <span style=\"color: #000088;\">$pass<\/span><span style=\"color: #339933;\">==<\/span><span style=\"color: #0000ff;\">&quot;pass&quot;<\/span><span style=\"color: #009900;\">&#41;<\/span>\n<span style=\"color: #009900;\">&#123;<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/si todo es correcto<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/puedes cargar sessiones para manejar el tema de seguridad<\/span>\n<span style=\"color: #000088;\">$resultados<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;respuesta&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">&quot;Validacion Correcta&quot;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #000088;\">$resultados<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;validacion&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">&quot;ok&quot;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #009900;\">&#125;<\/span>\n<span style=\"color: #b1b100;\">else<\/span>\n<span style=\"color: #009900;\">&#123;<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/si esta errado <\/span>\n<span style=\"color: #000088;\">$resultados<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;respuesta&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">&quot;Usuario y password incorrectos&quot;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #000088;\">$resultados<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">&quot;validacion&quot;<\/span><span style=\"color: #009900;\">&#93;<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">&quot;error&quot;<\/span><span style=\"color: #339933;\">;<\/span>\n<span style=\"color: #009900;\">&#125;<\/span>\n<span style=\"color: #666666; font-style: italic;\">\/\/aqui va el truco debes mostrar el valor de la variable que envias desde el getJSON jsoncallback<\/span>\n<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'jsoncallback'<\/span><span style=\"color: #009900;\">&#93;<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">&quot;(&quot;<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #990000;\">json_encode<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$resultados<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">&quot; ) &quot;<\/span><span style=\"color: #339933;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>entonces ya esta listo!!<\/p>\n<p>PERO!!!!<br \/>\nsi no tuvi\u00e9ramos acceso al archivo json para modificarlo directamente?, bueno tambien ahi solucion para <strong>llamar un json de un servidor que no tenemos accesos<\/strong>  y tambien es facil la solucion.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #666666; font-style: italic;\">\/*jalamos el contenido del archivo externo*\/<\/span>\n <span style=\"color: #000088;\">$file<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">file_get_contents<\/span> <span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #0000ff;\">&quot;http:\/\/dominio.com\/archivo.json&quot;<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">&quot;r&quot;<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\n <span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'jsoncallback'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">&quot; (&quot;<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #990000;\">utf8_decode<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$file<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">&quot;)&quot;<\/span><span style=\"color: #339933;\">;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p><img decoding=\"async\" title=\"mensaje\" src=\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\" alt=\"\" width=\"300\" height=\"103\" \/><\/p>\n<p>por ahora lo que hace el script es mostrarte en <strong>console<\/strong> una mensaje si los datos estan correctos o no \u00a0pero puedes redireccionar la pagina de entorno privado o mandar un error en la pantalla . como indique arriba puedes cargar sesiones y hacer las validaciones en la \u00e1rea privada.<\/p>\n<p>el ejemplo a descargar esta solo para que lo coloques en un servidor web y correrlo ya que el login.php lo tengo en mi servidor.<br \/>\nlike para descarga \ud83d\ude42<br \/>\n[to_like id=\u00bb239&#8243;]\n<a href=http:\/\/luisrodriguez.pe\/demos\/scripts\/jsonp\/jsonp.zip>Descarga<\/a><br \/>\n[\/to_like]\n","protected":false},"excerpt":{"rendered":"En ciertos proyectos es necesario poder obtener datos de otro servidor por AJAX pero el inconveniente de siempre que los navegadores por seguridad no lo permiten solo permiten los que est\u00e9n en el mismo servidor. JSONP \u00a0tambi\u00e9n conocido como JSON con Padding es una tecnica que permite obtener datos de servidores externos. En que consiste[&#8230;]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,6],"tags":[21,23,22,17],"class_list":["post-312","post","type-post","status-publish","format-standard","hentry","category-javascript","category-php","tag-ajax","tag-cargar-archivo-externo","tag-javascript-2","tag-jquery-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez\" \/>\n<meta property=\"og:description\" content=\"En ciertos proyectos es necesario poder obtener datos de otro servidor por AJAX pero el inconveniente de siempre que los navegadores por seguridad no lo permiten solo permiten los que est\u00e9n en el mismo servidor. JSONP \u00a0tambi\u00e9n conocido como JSON con Padding es una tecnica que permite obtener datos de servidores externos. En que consiste[...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Luis Rodriguez\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/luisrodriguez.pe\" \/>\n<meta property=\"article:published_time\" content=\"2013-08-13T21:31:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-10-04T19:23:35+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\" \/>\n<meta name=\"author\" content=\"Luis Rodriguez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@luizmirodriguez\" \/>\n<meta name=\"twitter:site\" content=\"@luizmirodriguez\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luis Rodriguez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\"},\"author\":{\"name\":\"Luis Rodriguez\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c\"},\"headline\":\"AJAX Cross-Domain: JSONP con PHP\",\"datePublished\":\"2013-08-13T21:31:46+00:00\",\"dateModified\":\"2013-10-04T19:23:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\"},\"wordCount\":260,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\",\"keywords\":[\"ajax\",\"cargar archivo externo\",\"javascript\",\"jquery\"],\"articleSection\":[\"JAVASCRIPT\",\"PHP\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\",\"url\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\",\"name\":\"AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez\",\"isPartOf\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\",\"datePublished\":\"2013-08-13T21:31:46+00:00\",\"dateModified\":\"2013-10-04T19:23:35+00:00\",\"author\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c\"},\"breadcrumb\":{\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage\",\"url\":\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\",\"contentUrl\":\"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/luisrodriguez.pe\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AJAX Cross-Domain: JSONP con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/#website\",\"url\":\"https:\/\/luisrodriguez.pe\/blog\/\",\"name\":\"Blog Luis Rodriguez\",\"description\":\"Analytics Developer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/luisrodriguez.pe\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c\",\"name\":\"Luis Rodriguez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g\",\"caption\":\"Luis Rodriguez\"},\"description\":\"Hola, Soy Luis Rodriguez, radico en Lima \u2013 Per\u00fa, formado en una carrera inform\u00e1tica, desempe\u00f1ando desde el 2007 como programador web y viendo proyectos desde Front End y Back End a lo que me perfile como Full Stack. Esta Experiencia junto a mi inter\u00e9s en la Anal\u00edtica Web me ayud\u00f3 mucho entender el funcionamiento interno de las herramientas de anal\u00edtica, con las que vengo trabajo activamente desde 2017. Linkedin\",\"sameAs\":[\"http:\/\/luisrodriguez.pe\"],\"url\":\"https:\/\/luisrodriguez.pe\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/","og_locale":"es_ES","og_type":"article","og_title":"AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez","og_description":"En ciertos proyectos es necesario poder obtener datos de otro servidor por AJAX pero el inconveniente de siempre que los navegadores por seguridad no lo permiten solo permiten los que est\u00e9n en el mismo servidor. JSONP \u00a0tambi\u00e9n conocido como JSON con Padding es una tecnica que permite obtener datos de servidores externos. En que consiste[...]","og_url":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/","og_site_name":"Blog Luis Rodriguez","article_publisher":"https:\/\/www.facebook.com\/luisrodriguez.pe","article_published_time":"2013-08-13T21:31:46+00:00","article_modified_time":"2013-10-04T19:23:35+00:00","og_image":[{"url":"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png","type":"","width":"","height":""}],"author":"Luis Rodriguez","twitter_card":"summary_large_image","twitter_creator":"@luizmirodriguez","twitter_site":"@luizmirodriguez","twitter_misc":{"Escrito por":"Luis Rodriguez","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#article","isPartOf":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/"},"author":{"name":"Luis Rodriguez","@id":"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c"},"headline":"AJAX Cross-Domain: JSONP con PHP","datePublished":"2013-08-13T21:31:46+00:00","dateModified":"2013-10-04T19:23:35+00:00","mainEntityOfPage":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/"},"wordCount":260,"commentCount":0,"image":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png","keywords":["ajax","cargar archivo externo","javascript","jquery"],"articleSection":["JAVASCRIPT","PHP"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/","url":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/","name":"AJAX Cross-Domain: JSONP con PHP - Blog Luis Rodriguez","isPartOf":{"@id":"https:\/\/luisrodriguez.pe\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage"},"image":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png","datePublished":"2013-08-13T21:31:46+00:00","dateModified":"2013-10-04T19:23:35+00:00","author":{"@id":"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c"},"breadcrumb":{"@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#primaryimage","url":"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png","contentUrl":"http:\/\/blog.luisrodriguez.pe\/wp-content\/uploads\/2013\/08\/mensaje-300x103.png"},{"@type":"BreadcrumbList","@id":"https:\/\/luisrodriguez.pe\/blog\/ajax-cross-domain-jsonp-con-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/luisrodriguez.pe\/blog\/"},{"@type":"ListItem","position":2,"name":"AJAX Cross-Domain: JSONP con PHP"}]},{"@type":"WebSite","@id":"https:\/\/luisrodriguez.pe\/blog\/#website","url":"https:\/\/luisrodriguez.pe\/blog\/","name":"Blog Luis Rodriguez","description":"Analytics Developer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/luisrodriguez.pe\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/luisrodriguez.pe\/blog\/#\/schema\/person\/ec55de81e01fdaf3533eb78f6a49090c","name":"Luis Rodriguez","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3b0f9734b267ecb38e1860734b4caebda4efa8be9a2bb536862b6a2ba23afa82?s=96&d=mm&r=g","caption":"Luis Rodriguez"},"description":"Hola, Soy Luis Rodriguez, radico en Lima \u2013 Per\u00fa, formado en una carrera inform\u00e1tica, desempe\u00f1ando desde el 2007 como programador web y viendo proyectos desde Front End y Back End a lo que me perfile como Full Stack. Esta Experiencia junto a mi inter\u00e9s en la Anal\u00edtica Web me ayud\u00f3 mucho entender el funcionamiento interno de las herramientas de anal\u00edtica, con las que vengo trabajo activamente desde 2017. Linkedin","sameAs":["http:\/\/luisrodriguez.pe"],"url":"https:\/\/luisrodriguez.pe\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/posts\/312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/comments?post=312"}],"version-history":[{"count":19,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/posts\/312\/revisions"}],"predecessor-version":[{"id":365,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/posts\/312\/revisions\/365"}],"wp:attachment":[{"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/media?parent=312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/categories?post=312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luisrodriguez.pe\/blog\/wp-json\/wp\/v2\/tags?post=312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}