在ie8 / 9中jquery ajax调用不起作用

时间:2013-10-23 20:29:37

标签: javascript jquery html ajax internet-explorer

我觉得我应该能够找到这个anwser,但经过数小时的研究后却没有成功。我有page这个简单的jquery ajax调用API服务。它在Chrome,Safari和Firefox,甚至IE 10中运行良好。但IE 9和8似乎失败了。

以下是代码:

 $.ajax({
                    type: "GET",
                    url: "http://api.domain.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()),
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function (result) {
                        $('#results').children().remove();
                        var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result;
                        if (arrayd != null) {
                            for (var i = 0; i < arrayd.length; i++) {
                                $('#results').append('<li>' + arrayd[i].SchoolName + '</li>');
                            }
                        }
                    },
                    error: function (request, status, errorThrown) {
                        alert("There was an issue with the request");
                    } // When Service call fails
                });

最大的问题是警报文件,但我看不到IE调试工具中的任何流量,这对我来说无法看到我是否能够点击服务器。

我尝试了很多东西:

  1. 根据http://mvcdiary.com/2013/01/16/jquery-ajax-request-not-working-in-ie9/
  2. 设置$ .ajax设置
  3. 设置'$ .support.cors = true;'在ajax调用之前
  4. 使用'jquery.ieco​​rs.js'
  5. 更新

    将dataType更改为'jsonp'后,我开始通过成功调用看到IE 8/9中的流量。但是,我现在没有让任何浏览器调用成功方法。

     $.ajax({
                        type: "GET",
                        url: "http://api.athletesinaction.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()),
                        dataType: "jsonp",
                        async: false,
                        contentType: "application/javascript",
                        crossDomain: true,
                        jsonpCallback: 'myTest',
                        success: myTest,
                        error: function (request, status, errorThrown) {
                            alert(errorThrown);
                        } // When Service call fails
                    });
    
    
            function myTest (argument) {
                alert("YEAH");
                $('#results').children().remove();
                var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result;
                if (arrayd != null) {
                    for (var i = 0; i < arrayd.length; i++) {
                        $('#results').append('<li>' + arrayd[i].SchoolName + '</li>');
                    }
                }
            }
    

2 个答案:

答案 0 :(得分:3)

尝试将dataType更改为jsonp

虽然该服务需要支持这种类型的请求。

答案 1 :(得分:0)

是的,它在IE8中不起作用。

如果您需要支持IE8,请使用JSONP或postMessage,或两者兼而有之。