使用jquery $ .get来调用外部Web服务

时间:2010-09-30 16:56:27

标签: web-services jquery

我在页面加载时调用以下jQuery代码来测试从客户端调用外部Web服务的概念。成功回调中的数据对象始终为空。我做错了什么?

 $.ajax({
    url: "http://www.google.com/search",
    type: 'GET',
    data: { q: "green tea" },
    success: function(data) { alert("Data Loaded: " + data) },
    dataType: "text/html"
 });

2 个答案:

答案 0 :(得分:2)

这是你在这里遇到的same-origin policy,它专门用于防止跨域调用出于安全原因。 预期的行为是响应在此处为空。

您需要通过JSONP获取数据或通过您自己的域获取数据,服务器代理请求。

值得注意的是Google有a full JavaScript API for searching您可能需要查看这样做。

答案 1 :(得分:0)

浏览器不允许您进行跨域请求(安全功能)。有一个的黑客,有一个限制,你只能得到json作为回应

----技巧(黑客)----

使用jquery(或javascript)你创建一个新的脚本标签并使用src =“url_of_third_party?”,当你发出请求时,你会从跨站点获得json。

jQuery('body').append('<script src="cross_site_url" type="text/javascript"></script>');

或者只是你可以这样做

  $.ajax({

    url: "http://www.google.com/search",
    type: 'GET',
    data: { q: "green tea" },
    success: function(data) { alert("Data Loaded: " + data) },
    dataType: "jsonp",
 });

注意:dataType = jsonp