2011-05-09 95 views
5

我最近试图从使用jQuery的URL获得一些响应。因此,我将jQuery API Get Request Tutorial的获取请求示例复制到我的项目中,并试图运行它,但是我的调试消息告诉我,它不能继续。我尝试了使用简单请求的JavaScript Ajax库,但它没有奏效。jQuery在HTTP URL上获取请求

所以我问你,如果你能以某种方式帮助我。

这就是我所做的,但没有任何回应。

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

$.get(url, function(data){ 


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

难道我可能忘记了包括ajax或jQuery库。为了更好的理解,我有c和obj-c的经验,这就是为什么我认为图书馆缺失。

在每个示例中,只有一个像“test.php”这样的短url。我的完整HTTP网址是否错误?

感谢您的高级答案。

溴 尼克

回答

12

我提供了一个示例场景,以帮助您开始:

<!-- 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 

这可能是最好的一个外部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

非常感谢你spryno724,我将在下班时尝试这个。谢谢 – NicTesla 2011-05-10 08:35:07

+0

非常感谢你!验证了几种可能性之后,我拿出了你提到的那个。对于所有其他人来说,谁想要更多的解决方案使用代理服务器(就像其他人在这里用PHP展示的,或者YQL,这是一个雅虎代理服务器,或者如果你使用tomcat,你可以自己编写代理服务器),或使用脚本标签,就像我选择的解决方案。我需要它作为我的学士论文,所以谢谢你们! BR – NicTesla 2011-05-16 19:28:44

+0

没问题,很高兴能帮到你! – 2011-05-16 21:55:15

0

你只可以从你的域/服务器

+0

所以它不能发送一个http url的请求? – NicTesla 2011-05-09 20:29:31

+0

只要该url与脚本位于同一台服务器上即可。你可以从你的服务器请求一个php页面来读取你需要的URL。 – user489872 2011-05-09 20:30:45

+0

你将如何执行一个http请求,以excample谷歌使用JavaScript? – NicTesla 2011-05-09 20:33:09

9

访问的网页你打的Same Origin Policy关于Ajax请求。

简而言之,JS/Ajax在默认情况下只允许触发与HTML页面所在的域相同的域的请求。如果您打算在其他域上发起请求,则必须支持JSONP和/或设置Access-Control headers才能使其工作。如果这不是一个选项,那么你必须在服务器端创建一些代理并使用它(请小心,因为可以禁止从其他使用机器人的站点泄漏太多)。

+0

是否有向URL发送请求的可能性,即“超出我的域” – NicTesla 2011-05-09 20:31:45

+1

是的,请使用服务器端语言自己创建一个代理。基本上,让你的服务器请求一个URL并返回响应。然后你可以使用ajax连接到你的服务器。例如在PHP中,你可以使用'curl()'来实现这一点。让它将URL作为请求参数,并将'curl()'结果回显给响应。尽管如此,小心!根据策略,其他站点有资格禁止您的服务器的IP以奇怪模式连接到它们。如果主机没有公开的ajax api,那么更好的办法是查看。 Google有几个公共ajax API。 – BalusC 2011-05-09 20:32:23

+0

好的,你将如何在JavaScript中做到这一点? – NicTesla 2011-05-09 20:34:50

2

正如其他人所说,你不能访问另一台服务器上的文件。有一个黑客寿。如果您使用的是服务器端语言(如我假设你),你可以简单地这样做:

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) }); 

这应该工作!