Вызов API REST из JavaScript с Firefox не работает - PullRequest
1 голос
/ 11 января 2012

Я использую следующий код для вызова API REST с использованием JavaScript.Этот код отлично работает с IE, но зависает при методе отправки с Firefox 9.0.1.Я считаю, что IE не обналичивает предыдущий ответ.

Я пробовал отладку с помощью Firebug, но это не помогает.Объект XMLHttpRequest, предназначенный для Firefox, создан успешно и проходит через весь код, но без ответа.

<script language="javascript" type="text/javascript">

    function processRequest() {
         var signedURI = "http://api.saaspose.com/v1.0/storage/disc?appSID=myappSID&signature=mySignature";

        var xmlhttp = null;

        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
            if (typeof xmlhttp.overrideMimeType != 'undefined') {
                xmlhttp.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            alert('Not supported!');
        }

        xmlhttp.open('GET', signedURI, true);

        xmlhttp.onreadystatechange = function () {

            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

            alert(xmlhttp.responseText);

            } else {
                //alert("ready state : " + xmlhttp.readyState.toString() + " status : " + xmlhttp.status.toString());
            }
        };

         xmlhttp.send(null);
    }
</script>

Есть идеи, почему эта проблема возникает в Firefox, но не в IE?

1 Ответ

2 голосов
/ 22 февраля 2012

Группе пришлось решить эту проблему, добавив поддержку JSONP в службы WCF, а затем используя jQuery на стороне клиента, например:

        $(function () {
        $("#disc").click(function () {
            $.getJSON("http://api.saaspose.com/v1.0/storage/disc?appSID=appsid&signature=signature&callback=?", function (data) {
                var items = [];
                $("#discResult").append('<br/><b>Status: ' + data.Status + '</b>');
                if (data.Status = 'OK') {
                    var discUsage = data.DiscUsage;
                    $.each(discUsage, function (key, val) {
                        items.push('<li id="' + key + '">' + key + ': ' + val + '</li>');
                    });

                    $('<ul/>', {
                        'class': 'my-new-list',
                        html: items.join('')
                    }).appendTo('#discResult');
                }
            });
        });
    });

Спасибо всем за комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...