jquery ajax jsonp跨域回调函数只能在IE7及以下版本中获取任何数据

时间:2014-01-08 07:09:08

标签: jquery internet-explorer-7 cross-domain jsonp jquery-callback

我有两台服务器,一台是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"}

1 个答案:

答案 0 :(得分:0)

在IE8中,Microsoft实现了他们自己的crossDomain版本,而不是实现XMLHttpRequest的CORS版本,IE团队使用他们自己的专有对象,名为XDomainRequest

jQuery为IE8修补了这个,但是在IE7中没有实现这样的方法,因此IE7根本不支持跨域调用,它只在IE8及以上版本中支持。