IE8 & 9 - no jquery ajax response object

IE8 & 9 - no jquery ajax response object

本文关键字:jquery ajax response object no amp IE8      更新时间:2023-09-26

jquery version: 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');} 为 IE 8 和 9 返回 Empty,但适用于 IE10 和所有其他浏览器

我已经阅读并尝试了这里我能找到的可能相关的每篇帖子,无法理解为什么这只对这两个浏览器造成轰炸,以及要检查什么

啪!

试着给你一个像这样的 ajax 调用dataType

dataType: 'json'

因此,它知道您期望哪种数据。您还应该从服务器返回响应标头中的content type作为application/json - 您的json_encode方法只是将您的对象转换为 JSON,但显然没有应用正确的标头(ref php.net)

您需要添加:

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

显式声明dataType后,不需要任何jQuery.ParseJSON,因为它会在调用success处理程序之前对其进行转换,因此参数r将是您所期望的JSON:)

也只是注意(正如 OP 发现的那样),header函数调用需要在json_encode调用之前