我无法让ajax服务工作。 $.get("http://google.com")
的简单类不起作用。此外,此代码也不起作用:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script>
$.ajax({
url: "http://google.com",
dataType: "html",
success: function(data, status) {
console.log("Success:");
console.log(" Data: " + data);
console.log(" Status: " + status);
},
error: function(request, status, error) {
console.log("Error:");
console.log(" Request: " + request);
console.log(" Status: " + status);
console.log(" Error: " + error);
},
});
</script>
</body>
</html>
保存在test.html
。
这是控制台上的输出:
Error:
Request: [object Object]
Status: error
Error:
我猜这些是返回对象的重要值:
readyState 0
responseText ""
status 0
statusText "error"
为什么请求不起作用? 谢谢,
答案 0 :(得分:3)
您不能使用AJAX来访问这样的跨域脚本。这是因为Same Origin Policy - 出于安全原因而实施的内容:
这种机制对现代网络具有特殊意义 广泛依赖HTTP cookie维护的应用程序 经过身份验证的用户会话,因为服务器基于HTTP cookie 显示敏感信息或改变状态的信息 动作。严格区分不相关的内容 必须在客户端维护站点以防止数据丢失 机密性或完整性。
所以你有几个选择:
答案 1 :(得分:1)
由于same-origin-policy,您无法向其他域发出请求。有关详细信息,请参阅http://api.jquery.com/jQuery.ajax/。
答案 2 :(得分:1)
您可以使用JSONP实现跨域通信。
但是对于普通的HTML,你可能会在同一个域中。
$.ajax({
url: "http://google.com",
dataType: "jsonp",
success: function(data, status) {
console.log("Success:");
console.log(" Data: " + data);
console.log(" Status: " + status);
},
error: function(request, status, error) {
console.log("Error:");
console.log(" Request: " + request);
console.log(" Status: " + status);
console.log(" Error: " + error);
},
});
编辑:
但是如果您的URL未返回有效的格式化json,则您的请求将失败。 有关工作示例,请检查: