我在页面加载时调用以下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"
});
答案 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