2017-08-25 60 views
0

我正在使用Datatables.js来处理大量数据的表。我正在尝试添加一些自定义语言,但在处理语言文件时遇到对象语法错误:http://domaintest.com/[object%20Object]jQuery ajax对象语法错误

如果我评论ajax调用,没有错误。

错误在控制台中可见:jsFiddle

代码:

function runDatatable() { 
    // Datatable language switcher with custom language mods to overwrite the defaults 
    function getLanguage() { 
    var $langMap = { 
     en: { 
     path: 'English', 
     mods: { 
      sLengthMenu: 'Display _MENU_ persons', 
      sInfo: 'Showing _START_ to _END_ of _TOTAL_ persons', 
      sInfoEmpty: 'Showin 0 to 0 out of 0 persons' 
     } 
     }, 
     es: { 
     path: 'Spanish', 
     mods: { 
      sInfo: "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ personas", 
      sInfoEmpty: "Mostrando personas del 0 al 0 de un total de 0 personas" 
     } 
     } 
    }; 
    var $lang = $('html').attr('lang'); 
    // Fallback 
    if (!$langMap[$lang]) { 
     $lang = 'en'; 
    } 
    var $result = null; 
    var path = '//cdn.datatables.net/plug-ins/1.10.13/i18n/'; 
    var url = path + $langMap[$lang].path + '.json'; 
    console.log(url); 
    $.ajax({ 
     async: false, 
     url: url, 
     success: function(obj) { 
     $result = $.extend({}, obj, $langMap[$lang].mods); 
     console.log($result); 
     }, 
     error: function(xhr, status, error) { 
     console.log(xhr.responseText); 
     } 
    }); 
    return $result; 
    } 

    // Build Datatable 
    $('#datatable').DataTable({ 
    language: { 
     url: getLanguage() 
    }, 
    ordering: true, 
    autoWidth: false, 
    fixedHeader: true, 
    responsive: true 
    }); 
} 

缺少什么我在这里?

+0

什么错误,你所面对?当检查浏览器控制台时,我看到的错误只是404错误。 – Terry

+0

是的,这是错误... [object%20Object]'因此,语言功能不起作用。 – Meek

+0

错误在生产中是一样的。 – Meek

回答

1

您应该扩展以这种方式反对:

$tmp = $.extend({}, obj, $langMap[$lang].mods); 
    $langMap[$lang].mods = $tmp; 

和你所要求的网址:

language: { 
     url: getLanguage() 
    }, 

但你返回$langMap

所以你应该是这样(没有Ajax呼叫):

return path + $langMap[$lang].path + '.json'; 

https://jsfiddle.net/j6w5ww7w/1/

,如果你想覆盖的标准文件中的最后一个:

language: getLanguage()return $langMap[$lang].mods;

https://jsfiddle.net/j6w5ww7w/3/

+0

好的,我应该在哪里取代它? – Meek

+0

@Meek我编辑它 – NikNik

+0

是的,它正确地更改语言文件,但现在它不扩展它与我的本地更改(mods)... – Meek