Как я могу получить столбец данных в DataTable, где моя кнопка находится в AJAX? - PullRequest
0 голосов
/ 08 ноября 2019

Здравствуйте, я довольно новичок в datatable, и я хотел бы обратиться за помощью в получении идентификатора пользователя, когда я нажимаю кнопку, и это вызвало бы другой вызов ajax, когда он будет выполнять метод POST, но я не уверен, как это можно сделать. внутри тега сценария. Это правильный метод для реализации данных и кнопки? Мне действительно нужен совет по этому поводу.

Вот мой код:

 <script>
        uId = sessionStorage.getItem('uId')
        username = sessionStorage.getItem('username')
        var userListTable = $('#userListTable').dataTable({
        'ajax': {
            "type" : "GET",
            "url" : "http://localhost:8080/Test-war/webresources/users/" + uId + "/retrieveUserList",
            "dataSrc": ""
        },
        'columns': [
            {title : "User ID", "data" : "id"},
            {title : "Username", "data" : "username"},
            {title : "Gender", "data" : "gender"},
            {title : "Email", "data" : "email"},
            {title : "Contact", "data" : "contact"},
            {title : "Created", "data" : "created", "render" : function(data) {
                var date = new Date(data);
                var month = date.getMonth() + 1;
                return (month.toString().length > 1 ? month : "0" 
                + month) + "/" + date.getDate() + "/" + date.getFullYear();
            }},
            {title : "Follow User", "defaultContent" : '<button onclick="followUser()">Follow User</button>'},
            {title : "Unfollow User", "defaultContent" : '<button onclick="unfollowUser()">Unfollow User</button>'},

        ]
    });

    </script>

Отсюда я использую функцию followerUser (), но я понятия не имею, как я могу получить идентификатор строки, в которой находилась кнопканажал на.

function followUser() {
var tId = 
$.ajax({
    type: "POST",
    url: "http://localhost:8080/Test-war/webresources/users/" + tId + "/followUser",
    data: body,
    contentType: "application/json; charset=utf-8",
    success: function(data, textStatus, xhr)
    {
        alert("You have successful followed user")
        window.location.href = "viewUserList.html";
        console.log(data)
        console.log(textStatus)
    },
    error: function(xhr, error, errorType) {
        alert("Error following user...")
    }
});

Вот изображение с данными:

The image of the datatable

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать что-то вроде приведенного ниже кода. Вы можете использовать API данных для извлечения данных строки.

var dataSet = [
    {'engine':'Webkit','browser':'Safari 1.2','platform':'OSX.3','version':'125.5','grade':'A'},
    {'engine':'Other browsers','browser':'All others','platform':'-','version':'-','grade':'U'}
];

$(document).ready(function() {

    $('#demo').html('<table class="display" id="example"></table>');

    $('#example').dataTable( {
    "data": dataSet,
    "columns": [
        { "sortable" : false, "data": null, "defaultContent": "<button>Select</button>", "title" : "Choose"
        },
        { "title": "Engine", "data": "engine" },
        { "title": "Browser", "data": "browser" },
        { "title": "Platform", "data": "platform" },
        { "title": "Version", "data": "version", "class": "center" },
        { "title": "Grade", "data": "grade", "class": "center" },
        { "defaultContent": true, "data": "existing", "visible": false }
    ],
    initComplete: function(oSettings, json) {
      console.log('drawing complete');
      if (oSettings.fnRecordsTotal() > 1) {
        $('#example').DataTable().row.add({
          'engine' : 'Presto',
          'browser' : 'Opera 7.5',
          'platform' : 'Win 95+ / OSX.2+',
          'version' : '-',
          'grade' : 'A',
          'existing' : false
        }).draw();
      }
    }
} );

$('#example tbody').on('click', 'button', function(e) {

    var data = $('#example')
    .DataTable()
    .row( $(this).parents('tr') )
    .data();

    console.log(data.version);// obj.columnname you can use data.id in you case to fetch User id
});

});

здесь работает пример

...