簡體   English   中英

如何解決數據表中的錯誤解析?

[英]How to solve error parsing in dataTables?

我有一個帶有用戶信息fullname的功能按鈕,單擊該按鈕后,它將發送fullnamelevel到 API 進行處理,結果應顯示在 dataTable 中。 不幸的是,我收到了這個錯誤。

在此處輸入圖片說明

這是 console.log console.log(params) {"task_level":3,"fullname":"Administrator"}

下面是 console.log console.log(params)

在此處輸入圖片說明

兩個控制台日志都類似於 API 的結果。

我不知道哪個合適。

JS 1st Try (第一個 Ajax 將參數發送到 API 並在返回成功后希望工作但沒有。

"<button type='button' class='btn btn-dark btn-round' onclick='viewTablePerson(&quot;"+value.fullname+"&quot;)'>View Project</button>"+

function viewTablePerson(fullname){

    var level = 3;
    var fullname2 = fullname;

    var obj = {
        task_level : level,
        fullname   : fullname2        
    };

    var params = JSON.stringify(obj);
    console.log(params)

    $.ajax({
        url : url_api + '/api/user_task',
        crossDomain: true,
        type : 'POST',
        dataType : 'json',
        data: params,
        success: function(response){
            if (response.status == "Success"){
            console.log(response)
                $('#viewProgress').DataTable({
                    ajax: { 
                        url: url_api + '/api/user_task',
                        crossDomain : true,
                        type : "POST",
                        cache : false,
                        dataType : "json",
                        contentType: false,
                        processData: true,
                        data : params,
                        timeout: 10000,
                    },
                    destroy: true,        
                    columns: [
                        { data : "task_name"},
                        { data : "task_owner"},
                        { data : "task_status"}
                    ],
                });
            }
        },
        error: function(e){}
    });
}

JS第二次嘗試

<button type='button' class='btn btn-dark btn-round' onclick='viewTablePerson(&quot;"+value.fullname+"&quot;)'>View Project</button>"+

function viewTablePerson(fullname){

    var level = 3;
    var fullname2 = fullname;

    var obj = {
        task_level : level,
        fullname   : fullname2
    };

    var params = JSON.stringify(obj);
    console.log(params)

    $('#viewProgress').DataTable({
        ajax: { 
            url: url_api + '/api/user_task',
            crossDomain : true,
            type : "POST",
            cache : false,
            dataType : "json",
            contentType: false,
            processData: true,
            data : params,
            timeout: 10000,
        },
        destroy: true,
        columns: [
            { data : "task_name"},
            { data : "task_owner"},
            { data : "task_status"}
        ],
    });
}

文檔說:

使用 ajax 選項為 DataTables 加載數據時,如果服務器以有效 HTTP 2xx 響應以外的任何內容進行響應,則可能會觸發一般錯誤。

因此,您必須檢查服務器端響應,而不是在前端搜索問題。 另外,在您的情況下,請確保

  • 插件向加載當前頁面的同一個域發送請求;
  • 瀏覽器安全系統不會阻止加載外部腳本 - 例如在http://localhost 上,如果沒有特殊措施,您無法 Ajax 從http://google.com加載腳本;
  • 您指定了一個沒有域名的相對路徑(如果您使用的是單個域);
  • 響應中的 JSON 數據是有效的。

如果您無法更改后端系統來修復錯誤,但不希望您的最終用戶看到警報消息,您可以更改 DataTables 的錯誤報告機制,以將 Javascript 錯誤拋出到瀏覽器的控制台,而不是提醒它:

$.fn.dataTable.ext.errMode = 'throw';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM