3

私はこのアンサーを見つけることができるはずだと感じていますが、何時間もの調査の結果、成功したことはありません. このページには、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 デバッグ ツールでトラフィックを確認できないため、サーバーにアクセスしたかどうかを確認するのに役立ちません。

私は多くのことを試しました:

  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」の使用

アップデート

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

2 に答える 2

3

を に変更してみてdataTypeくださいjsonp

ただし、サービスはこのタイプのリクエストをサポートする必要があります。

于 2013-10-23T20:35:31.673 に答える
0

はい、IE8 では動作しません。

IE8 をサポートする必要がある場合は、JSONP または postMessage、あるいはその両方を組み合わせてください。

于 2013-10-23T20:34:29.153 に答える