2011-05-09 18 views
5

Recientemente traté de obtener respuesta de una URL usando jQuery. Por lo tanto, copié una muestra de solicitud de obtención de jQuery API Get Request Tutorial en mi proyecto e intenté ejecutarla, pero mis mensajes de depuración me mostraron que no puede ir más allá. Probé la javascript Ajax Library con una simple solicitud, pero no funcionó.jQuery Get Request on HTTP URL

Así que te estoy preguntando, si pudieras ayudarme de alguna manera.

Y esto es todo lo que hago, pero no hay respuesta.

var url = "http://www.google.com"; 

$.get(url, function(data){ 


    alert("Data Loaded: " + data); 
    }); 

¿Probablemente me olvidé de incluir una biblioteca ajax o jQuery? Para una mejor comprensión, tengo experiencia c y obj-c, esta es la razón por la que creo que falta una biblioteca.

En cada muestra hay solo una url corta como "test.php". ¿Está mal mi URL completa de HTTP?

Gracias por sus respuestas con anticipación.

Br Nic

Respuesta

12

que he proporcionado un escenario de ejemplo para ayudar a empezar:

<!-- Include this jQuery library in your HTML somewhere: --> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script 

Este es probablemente el mejor para incluir dentro de un archivo externo de JS:

//Listen when a button, with a class of "myButton", is clicked 
//You can use any jQuery/JavaScript event that you'd like to trigger the call 
$('.myButton').click(function() { 
//Send the AJAX call to the server 
    $.ajax({ 
    //The URL to process the request 
    'url' : 'page.php', 
    //The type of request, also known as the "method" in HTML forms 
    //Can be 'GET' or 'POST' 
    'type' : 'GET', 
    //Any post-data/get-data parameters 
    //This is optional 
    'data' : { 
     'paramater1' : 'value', 
     'parameter2' : 'another value' 
    }, 
    //The response from the server 
    'success' : function(data) { 
    //You can use any jQuery/JavaScript here!!! 
     if (data == "success") { 
     alert('request sent!'); 
     } 
    } 
    }); 
}); 
+0

Muchas gracias spryno724, voy a probar esto más adelante, cuando termine mi trabajo. Gracias – NicTesla

+0

¡Muchas gracias! Después de validar varias posibilidades, tomé esa que mencionaste. Para todos los demás, a quienes les gustaría tener más soluciones, usen un Proxy (como otros han mostrado aquí con PHP, o YQL, que es un Proxy de Yahoo, o si usan un tomcat, pueden escribir un proxy por su cuenta), o use etiquetas de script, como la solución que he elegido. ¡Lo necesitaba para mi tesis de licenciatura y por eso gracias a todos ustedes! BR – NicTesla

+0

¡No hay problema, me alegro de poder ayudar! –

0

que sólo se puede acceder a las páginas de su dominio/servidor

+0

por lo que no es posible enviar una solicitud en una url http? – NicTesla

+0

solo si la url está en el mismo servidor que la secuencia de comandos. puede solicitar una página php desde su servidor que lea la URL que necesita. – user489872

+0

¿cómo realizarías una solicitud http para excample google usando javascript? – NicTesla

9

que está golpeando la Same Origin Policy con respecto a las peticiones ajax.

En pocas palabras, JS/Ajax está permitido de forma predeterminada solo disparar solicitudes en el mismo dominio que desde donde se ha servido la página HTML. Si tiene la intención de activar solicitudes en otros dominios, debe admitir JSONP y/o establecer Access-Control headers para que funcione. Si eso no es una opción, entonces tienes que crear un proxy en el lado del servidor y usarlo en su lugar (ten cuidado ya que se te puede prohibir que extraigas demasiado de otros sitios usando un robot).

+0

existe la posibilidad de enviar una solicitud a una url, que está "fuera de mi dominio" – NicTesla

+1

Sí, cree un proxy usted mismo utilizando el idioma del lado del servidor. Básicamente, deje que su servidor solicite una URL y devuelva la respuesta. Entonces puedes usar ajax para conectarte a tu servidor. En, por ejemplo, PHP, puede usar 'curl()' para esto. Deje que tome una URL como parámetro de solicitud y repita el resultado 'curl()' en la respuesta. ¡Ten cuidado con esto! Dependiendo de la política, otros sitios son elegibles para prohibir que la IP de su servidor se conecte a ellos en patrones extraños. Mejor sería ver si el anfitrión no tiene una API pública de AJAX. Google tiene varias API ajax públicas. – BalusC

+0

bien, y ¿cómo harías esto en javascript? – NicTesla

2

Como han dicho otros, no puede acceder a los archivos en otro servidor. Hay un truco, aunque. Si está utilizando un lenguaje del lado del servidor (como supongo que lo son) sólo tiene que hacer algo como:

http://myserver.com/google.php:

<?php 
    echo get_file_contents('http://www.google.com'); 
?> 

http://myserver.com/myscript.js

$.get('google.php',function(data){ console.log(data) }); 

que debería funcionar!