编程语言
首页 > 编程语言> > javascript-ie8 / 9中的jquery ajax调用不起作用

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

作者:互联网

我觉得我应该能够找到答案,但经过数小时的研究,成功率为零.我有一个page,带有对API服务的简单jquery ajax调用.它在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调试工具中看到任何流量,这也无法帮助我查看是否连服务器.

我尝试了很多事情:

>根据http://mvcdiary.com/2013/01/16/jquery-ajax-request-not-working-in-ie9/设置$.ajax设置
>设置’$.support.cors = true;’在ajax调用之前
>使用“ jquery.ieco​​rs.js”

更新资料

将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>');
                }
            }
        }

解决方法:

尝试将dataType更改为jsonp.

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

标签:ajax,internet-explorer,html,javascript,jquery
来源: https://codeday.me/bug/20191122/2061030.html