如何使用jQuery调用带有JSON响应的ajax请求?
我无法从以下代码中打印行jQuery.support.cors=true的success。包括行jQuery.support.cors=true将发出警告消息。那么,如何在不丢失功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的RESTWeb服务,我必须利用JSON数据。请帮助我如何做到这一点。请提供工作样品如何使用jQuery调用带有JSON响应的ajax请求?,jquery,ajax,json,Jquery,Ajax,Json,我无法从以下代码中打印行jQuery.support.cors=true的success。包括行jQuery.support.cors=true将发出警告消息。那么,如何在不丢失功能的情况下避免这种情况呢?我的主要目标是调用一个返回JSON数据的RESTWeb服务,我必须利用JSON数据。请帮助我如何做到这一点。请提供工作样品 <!doctype html> <html lang="en"> <head> <meta charse
<!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>
jQuery.getJSON演示
jQuery.support.cors=true;
$.ajax({
网址:'http://json-cricket.appspot.com/score.json',
数据类型:“json”,
成功:职能(e){
//成功回调
警惕(“成功”);
}})
类型
//GET或POST,这是哪种类型的REST操作数据类型
错误出售contentType
更新: 在试图找出原因的同时,我认为这是理解问题的关键 假设您在域abc.com上,并且希望向域提出请求 xyz.com。要做到这一点,您需要跨越域边界,这是一个禁忌 布劳瑟兰的大部分地区 绕过此限制的一项是标记。当你 使用脚本标记时,域限制将被忽略,但在正常情况下 在这种情况下,你真的不能对结果做任何事情,而 脚本刚刚得到评估 向JSONP服务器发出请求时,请输入
JSONP
启用后,您将传递一个特殊参数,该参数会告诉服务器一些信息
关于你的页面。这样,服务器就能够很好地结束
它的响应方式是您的页面可以处理的
如果您正在请求跨域服务,则需要包括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
}
});
CORS(跨源资源共享)与XSS不同
$.support.cors
包含测试当前浏览器是否支持cors的测试结果。更改它不会使浏览器支持cors
此外,您的服务器必须通过返回正确的头来支持CORS。最好使用jsonp请求。为此,只需将
dataType
指定为jsonp
$.ajax({
url: 'http://json-cricket.appspot.com/score.json',
dataType: 'jsonp',
success: function (data) {
console.log(data);
}
});
参见上的示例尝试一下,它会给出最好的结果。这是在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);
}
});
}
我认为这个选项是
dataType
,不是全部小写,但不确定如果jquery能够处理它,会有多大的不同,我记不起来了。“将发出警告消息”哪条消息?跨域问题?我想这是一个跨域ajax请求?请尝试使用jsonpVoted进行小提琴演奏:)
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);
}
});
}