我有两台服务器,一台是localhost:3000,另一台是gjy.com:3001,
gjy.com:3301服务器端是expressjs。
//app.js
app.get('/user/jsonp', user.jsonp);
//user.js
exports.jsonp = function(req, res) {
res.jsonp({"name": "jsp"});
};
localhost:3000页面JS功能代码如下:
$.ajax({
type: 'GET',
url: 'http://gjy.com:3001/user/jsonp',
dataType: 'jsonp',
crossDomain: true,
success: function(data) {
console.log('data is loaded');
console.log(data);
},
error: function(err) {
console.log('err');
console.log(err);
}
});
和ie7及以下的控制台结果是
data is loaded
undefined
但是控制台会导致其他浏览器
data is loaded
{"name": "jsp"}
答案 0 :(得分:0)
在IE8中,Microsoft实现了他们自己的crossDomain版本,而不是实现XMLHttpRequest的CORS版本,IE团队使用他们自己的专有对象,名为XDomainRequest。
jQuery为IE8修补了这个,但是在IE7中没有实现这样的方法,因此IE7根本不支持跨域调用,它只在IE8及以上版本中支持。