jquery ajax 调用 .net web api 疏失
jquery ajax 调用 .net web api 出错
项目用jquery ajax 调用 .net web api。
$.support.cors = true;
$.ajax({
type: "GET",
url: "http://www.xxx.com/api/Subject/GetSubject",
dataType: "json",
data: {id:"123"},
//async: false,
processData: true,
//crossDomain: true,
success: function (html) {
alert("成功!");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("出错!");
}
});
症状如下:
web api在本地的时调用正常(web api 和 web 在localhost 的不同端口(也算是跨域))。
web api发布以后,再调用时,ie10正常获取数据,ie9、ie8都报错。
经过跟踪jquery库,可能出问题的有两处:
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch( e ) {}
}
function createActiveXHR() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch( e ) {}
}
new window.XMLHttpRequest(); 返回 完成该操作所需的数据还不可使用。
另外一处是
send: function( headers, complete ) {}方法体中
xhr.open( s.type, s.url, s.async ); 这句抛出异常,
message:"拒绝访问。\r\n"
number:-2147024891
请大侠们指点迷津。
------解决方案--------------------
2个都是本地local调试没跨域只是端口不一样ie不算跨域,发布后域名一样没有?不一样跨域了当然不行了
------解决方案--------------------
跨域使用jsonp
------解决方案--------------------
IE端口不一致可以请求
设置Access-Control-Allow-Origin响应头允许跨域请求,或者用JSONP操作
如果不是你的站点,无法管理,只能本站做代理,代理页面捉取跨域的内容输出,ajax请求本站的代理页面
------解决方案--------------------
http://www.xxx.com/api/Subject/GetSubject
$.ajax({
type: "GET",
url: "http://www.xxx.com/api/Subject/GetSubject?callback=?",
dataType: "jsonp",
data: { id: "123" },
//async: false,
processData: true,
//crossDomain: true,
success: function (o) {alert(o.data)
alert("成功!");
项目用jquery ajax 调用 .net web api。
$.support.cors = true;
$.ajax({
type: "GET",
url: "http://www.xxx.com/api/Subject/GetSubject",
dataType: "json",
data: {id:"123"},
//async: false,
processData: true,
//crossDomain: true,
success: function (html) {
alert("成功!");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("出错!");
}
});
症状如下:
web api在本地的时调用正常(web api 和 web 在localhost 的不同端口(也算是跨域))。
web api发布以后,再调用时,ie10正常获取数据,ie9、ie8都报错。
经过跟踪jquery库,可能出问题的有两处:
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch( e ) {}
}
function createActiveXHR() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch( e ) {}
}
new window.XMLHttpRequest(); 返回 完成该操作所需的数据还不可使用。
另外一处是
send: function( headers, complete ) {}方法体中
xhr.open( s.type, s.url, s.async ); 这句抛出异常,
message:"拒绝访问。\r\n"
number:-2147024891
请大侠们指点迷津。
jquery ajax
web api
.net
xmlhttprequest
json
------解决方案--------------------
2个都是本地local调试没跨域只是端口不一样ie不算跨域,发布后域名一样没有?不一样跨域了当然不行了
------解决方案--------------------
跨域使用jsonp
------解决方案--------------------
IE端口不一致可以请求
设置Access-Control-Allow-Origin响应头允许跨域请求,或者用JSONP操作
如果不是你的站点,无法管理,只能本站做代理,代理页面捉取跨域的内容输出,ajax请求本站的代理页面
------解决方案--------------------
http://www.xxx.com/api/Subject/GetSubject
Response.Write(Request.QueryString["callback"]+"({data:1234565})");
$.ajax({
type: "GET",
url: "http://www.xxx.com/api/Subject/GetSubject?callback=?",
dataType: "jsonp",
data: { id: "123" },
//async: false,
processData: true,
//crossDomain: true,
success: function (o) {alert(o.data)
alert("成功!");