2012-05-21 19 views
7

Aquí está el PHP documentation¿Hay una forma de JavaScript para hacer file_get_contents()?

Así es como lo usaría en una llamada Ajax, si no encuentro una forma de cliente pura para hacer esto.

$homepage = file_get_contents('http://www.example.com/'); 
echo $homepage; 

¿Hay forma de hacer este lado del cliente en su lugar, así que no tengo que ajax la cadena más?

+0

¿Cuál es el contenido de ese archivo que desea "incluir"? – MonkeyMonkey

+0

Similar al ejemplo anterior ... acepta una URL como parámetro ... la URL está definida por el usuario. –

Respuesta

6

que podía hacer

código JS:

$.post('phppage.php', { url: url }, function(data) { 
    document.getElementById('somediv').innerHTML = data;   
}); 

código PHP:

$url = $_POST['url']; 
echo file_get_contents($url); 

Eso ayudaría a que el contenido de la URL.

+0

@ CS_2013 - Debería serlo. Respuesta modificada – PitaJ

+0

Ajax los datos en ... de su propio servidor ... buena idea –

+0

@ CS_2013 - Gracias – PitaJ

3

No en un sentido general. Las restricciones entre dominios impiden que el código JavaScript haga esto.

Si el sitio de destino tiene CORS (uso compartido de recursos de origen cruzado) configurado, puede usar XMLHttpRequest para cargar archivos. La mayoría de los sitios no lo hacen, ya que está desactivado por defecto por razones de seguridad, y rara vez es necesario.

Si solo necesita incluir una página HTML, puede pegarla en un elemento . Sin embargo, esto está sujeto a algunas trampas de diseño (la página termina en un elemento de tamaño fijo).

+0

... ¿puedo hacer algún análisis del iframe ... tal vez tomar el título de alguna forma? –

+0

@ CS_2013 No, no si el 'iframe' no es un documento de su dominio. – Sampson

+0

No. El contenido del marco está bastante fuera de los límites. – duskwuff

5

JavaScript no puede salir y eliminar datos de páginas. Puede hacer una llamada a un script PHP local que luego va en su nombre y toma los datos, pero JavaScript (en el navegador) no puede hacer esto.

$.post("/localScript.php", { srcToGet: 'http://example.com' }, function(data){ 
    /* From within here, data is whatever your local script sent back to us */ 
}); 

tiene opciones como JSONP y uso compartido de recursos de origen cruzado a su disposición, pero ambos de los que requieren la creación del otro extremo, por lo que no se puede simplemente elegir un dominio y empezar a disparar las solicitudes de datos.

Lectura adicional: Same origin policy

+0

¿Esto cambiará alguna vez? –

0

O Puede usar la biblioteca php.js. Que permiten algunas funciones php para javascript. file_get_contents() funciona uno de ellos.

<script> 
var data = file_get_contents('Your URL'); 
</script> 

Puede encontrar más información sobre php.js: http://phpjs.org/

+1

Esto estará sujeto a la misma política de origen, así –

Cuestiones relacionadas