2017-08-25 73 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