IE8 & 9 - нет объекта ответа jquery ajax

0

Версия jquery: http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js

    $.ajax({
        url: CI_ROOT + current_page + '/get_results' ,
        type: 'post',
        data: { 'primary_key': primary_key, 'search_category':search_category, 'sub_category': sub_category ,'search_page':search_page, 'search_order': search_order, 'project_type': project_type},
        beforeSend: function(){
            $('.browse-list').html(spinner);
            $('.page-number-nav').html('');
        },          
        success: function(r){
            var response_obj = jQuery.parseJSON(r.responseText);

            $('.browse-list').html('');

            if (response_obj.status == 'SUCCESS')
            {               
                $('#sort_menu').hide();
                $('#sort_type').hide();

                if ((response_obj.results != 'No results') && (search_category != 'group') && (search_category == 'title' || (primary_key > 0)))
                {
                    $('#sort_menu').show(); 
                    $('#sort_type').show();             
                }

                $('.browse-list').html(response_obj.results);
                $('.page-number-nav').html(response_obj.pagination);
            }
        }
    }); 

if (r.responseText == undefined) {alert ('Empty');} возвращает Empty для IE 8 и 9, но работает для IE10 и всех других браузеров

Я прочитал и пробовал все сообщения здесь, я могу найти, что может быть уместным, не могу понять, почему это только бомбы для этих двух браузеров, и что проверить

ТИА!

Теги:
internet-explorer-9
internet-explorer-8

1 ответ

0
Лучший ответ

Попробуйте дать вам ajax вызов dataType например:

dataType: 'json'

поэтому он знает, какие данные вы ожидаете. Вы также должны вернуть content type в заголовке ответа с сервера как application/json - ваш метод json_encode просто преобразует ваш объект в JSON, но, по-видимому, не применяет правильные заголовки (ref php.net)

Вы хотите добавить:

header('Content-Type: application/json;charset=utf-8');

С dataType объявленным dataType не должно быть необходимости в jQuery.ParseJSON, поскольку он будет преобразовывать его, прежде чем он вызовет обработчик success, поэтому параметр r будет JSON, который вы ожидаете :)

Также просто примечание (как выяснилось OP), что вызов функции header должен быть перед вызовом json_encode

  • 0
    Я пробовал вариации на них, но дам еще один шанс, чтобы вы знали
  • 0
    параметр r содержит какую-либо информацию? это просто ответный текст не проходит?
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню