javascript - ie8/9 中的 jquery ajax 调用不起作用

标签 javascript jquery html ajax internet-explorer

我觉得我应该能够找到这个答案,但经过数小时的研究却没有成功。我有这个 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/ 设置 $.ajax 设置
  2. 设置“$.support.cors = true;”在 ajax 调用之前
  3. 使用“jquery.ieco​​rs.js”

更新

将数据类型更改为“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>');
                }
            }
        }

最佳答案

尝试将 dataType 更改为 jsonp

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

关于javascript - ie8/9 中的 jquery ajax 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551681/

相关文章:

jquery - 选择单个类元素

php - 读取/提交具有可变长度字段集的表单,作为数组服务器端读取

javascript - js - kcfinder tinymce 实现

Javascript 双击在 IE9 和 IE11 中不起作用

javascript - 下载 JavaScript 返回的图像 (html2canvas)

javascript - 具有多个更改的扩展属性 : one-liner ecma immutability

javascript - 更新 : How do I pass a default value into my modal input element

javascript - 如何验证在 Jquery 中动态添加的 div 子元素?

javascript - 未捕获的 typeerror 对象没有方法 'on' : backbone. js

javascript - 使用 javascript 检索 JSON 数据