我无法使用 jQuery.support.cors = true; 行从下面的代码中打印成功。包括 jQuery.support.cors = true; 行将发出警告消息。那么如何在不失去功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的rest webservice,我必须使用JSON数据。请帮助我如何实现这一目标?请提供工作样本
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.getJSON demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<script>
jQuery.support.cors = true;
$.ajax ({
url: 'http://json-cricket.appspot.com/score.json',
datatype: "json",
success: function (e) {
// Success callback
alert("sucess");
}})
</script>
</body>
</html>
答案 0 :(得分:5)
type
// GET或POST,哪种类型的REST OPEATION dataType
错误contentType
$.ajax({
type: "POST", //rest Type
dataType: 'jsonp', //mispelled
url: "http://json-cricket.appspot.com/score.json",
async: false,
contentType: "application/json; charset=utf-8",
success: function (msg) {
console.log(msg);
}
});
<强>更新强> 在试图找出原因的同时,我认为这是理解问题的best answer。
假设您在域abc.com上,并且您想要向域发出请求 xyz.com。为此,您需要跨越域边界,禁止进入 大多数浏览器。
绕过此限制的一项是标签。当你 使用脚本标记,域限制被忽略,但正常情况下 情况下,你不能真的对结果做任何事情了 脚本只是得到评估。
输入
JSONP
。当您向JSONP服务器发出请求时 启用后,您将传递一个特殊参数,告诉服务器一点 关于你的页面。 这样,服务器能够很好地结束 它以您的页面可以处理的方式响应。
答案 1 :(得分:2)
最佳镜头将使用jsonp请求。为此,请将dataType
指定为jsonp
$.ajax({
url: 'http://json-cricket.appspot.com/score.json',
dataType: 'jsonp',
success: function (data) {
console.log(data);
}
});
请参阅jsFidle
上的示例答案 2 :(得分:0)
如果您要请求跨域服务,则需要包含 jQuery.support.cors = true; 。正确的AJAX代码将是:
$.ajax ({
url: 'http://json-cricket.appspot.com/score.json',
dataType: "json",
contentType: "application/json",
success: function (jsonData) {
// Success callback
alert("sucess");
},
error: function() {
//any error to be handled
}
});
答案 3 :(得分:0)
CORS(跨源资源共享)与XSS不同。
$.support.cors
包含测试结果,该测试用于测试当前浏览器是否支持cors。更改它不会使浏览器支持cors。
此外,您的服务器必须通过返回正确的标头来支持CORS
。
答案 4 :(得分:0)
试试这个,它会给出最好的结果。这在REST架构中使用,响应速度非常快
function CallService(sucessData) {
$.ajax({
// Add code for Cross Domain
headers: getHeaders(),
type: varType, //GET or POST or PUT or DELETE verb
url: varUrl, // Location of the service
data: varData, //Data sent to server
contentType: varContentType, // content type sent to server
dataType: varDataType, //Expected data format from server
processdata: varProcessData, //True or False
crossDomain: true,
timeout: 200000,
success: sucessData,
error: function (xhr) {// When Service call fails
alert("Error: " + xhr.responseText);
}
});
}