IE6 Ajax с JQuery - PullRequest
       5

IE6 Ajax с JQuery

0 голосов
/ 05 ноября 2019

Я пытаюсь объединить данные из веб-службы REST в страницу HTML. Проблема в Internet Explorer 6 (который является моей целевой станцией на XP SP3), который я пытаюсь заставить работать. Вот используемый код:

$.ajax({
       type: "GET",
       contentType:"application/json; charset=utf-8",
       dataType : 'json',
       url: "https://jsonplaceholder.typicode.com/posts/1",
       success: function(data) {
            alert(data);
       },
       complete: function(xhr) {
          alert(xhr.status+" "+xhr.responseText);
       }
});

Протестировано на Firefox 52 ESR: как успешные, так и завершенные функции работают.

В Chrome 49: успех работает, вызывается complete, но xhr.status равен 0, а xhr.responseText пуст.

В IE6 успех не вызывается вообще, и вызывается complete, но xhr.status равен 0, а xhr.responseText не определен.

Попробовал то, что уже было сказано здесь в SOF, например удаление лишних запятых,добавление dataType ... но все еще безуспешно с IE6.

Как мы можем сделать это раз и навсегда?

Спасибо

Ответы [ 2 ]

3 голосов
/ 05 ноября 2019

IE6 древний , он не поддерживает CORS (даже с XDomainRequest).

В IE6 невозможно выполнить запросы HTTP-запросов RESTful из разных источников с использованием JavaScript.

Если вы хотите выполнить запрос кросс-источника, вам нужно будет использовать другой (не RESTful) подход, такой как JSONP.

0 голосов
/ 05 ноября 2019

Как сказал Квентин, отправка CORS-запроса не поддерживается в IE 6/7, вы можете проверить этот блог .

Вы можете сослаться на следующий код, чтобы использовать JSONP.

// Using JSONP
$.ajax({
    url: "<request url>",
    jsonp: "callback",

    // Tell jQuery we're expecting JSONP
    dataType: "jsonp",
    data: {
        q: "select title,abstract,url from search.news where query=\"cat\"",
        format: "json"
    },

    // Work with the response
    success: function( response ) {
        console.log( response ); // server response
    }
});

Кроме того, проверьте эту статью :

Internet Explorer 9 и более ранних версий игнорирует заголовки Access-Control-Allow и по умолчанию запрещает перекрестное происхождениезапросы на интернет-зону. Чтобы включить перекрестный доступ, перейдите в «Инструменты» -> «Свойства обозревателя» -> вкладка «Безопасность», нажмите кнопку «Пользовательский уровень». Найдите Разное -> Доступ к источникам данных по доменам и выберите опцию «Включить».

...