{"id":11054,"date":"2023-02-07T11:09:29","date_gmt":"2023-02-07T03:09:29","guid":{"rendered":"https:\/\/blog.hoyo.idv.tw\/?p=11054"},"modified":"2023-05-30T09:39:19","modified_gmt":"2023-05-30T01:39:19","slug":"datatable-1-12-server-side","status":"publish","type":"post","link":"https:\/\/blog.hoyo.idv.tw\/?p=11054","title":{"rendered":"DataTable 1.12 - Server-side"},"content":{"rendered":"<p>--<\/p>\n<h2>\u53c3\u8003\u8cc7\u6e90<\/h2>\n<ul>\n<li><a href=\"https:\/\/datatables.net\/examples\/data_sources\/server_side\" target=\"_blank\" rel=\"noopener\">DataTables example - Server-side processing<\/a><\/li>\n<li><a href=\"https:\/\/datatables.net\/reference\/event\/\" target=\"_blank\" rel=\"noopener\">Events (datatables.net)<\/a><\/li>\n<\/ul>\n<p>--<\/p>\n<pre class=\"lang:js decode:true\">$('#example').DataTable({\r\n    processing: true,\r\n    serverSide: true,\r\n    ajax: '..\/server_side\/scripts\/server_processing.php',\r\n});<\/pre>\n<ul>\n<li>serverSide: true \u958b\u555f Server-side<\/li>\n<li>processing: true \u958b\u555f\u52a0\u8f09\u52d5\u756b\uff0c\u9810\u8a2d\u662f false\uff0cHoyo \u4f7f\u7528\u53e6\u5916\u7684\u52a0\u8f09\u65b9\u5f0f\uff0c\u4e0b\u9762\u6703\u8b1b\u5230<\/li>\n<li>ajax \u5f9e Server \u53d6\u8cc7\u6599\uff0cDataTable \u6703\u63d0\u4f9b\u8cc7\u6599\u8d77\u59cb\u3001\u7d50\u675f\u7b46\u6578\uff0c\u6240\u4ee5\u5f8c\u7aef\u5c31\u4e0d\u9700\u8981\u8a08\u7b97\u7b46\u6578\u8d77\u59cb\u5f88\u65b9\u4fbf<\/li>\n<\/ul>\n<p>--<\/p>\n<h2>ajax \u50b3\u905e\u53c3\u6578<\/h2>\n<ul>\n<li><a href=\"https:\/\/datatables.net\/examples\/server_side\/post.html\" target=\"_blank\" rel=\"noopener\">DataTables example - POST data<\/a><\/li>\n<li><a href=\"https:\/\/datatables.net\/forums\/discussion\/49512\/multiple-search-value-on-server-side\" target=\"_blank\" rel=\"noopener\">Multiple search value on server side \u2014 DataTables forums<\/a><\/li>\n<\/ul>\n<p>DataTable \u7684 Server-side ajax \u4e00\u5b9a\u8981\u7528\u8b8a\u6578\u50b3\u905e\u904e\u53bb\uff0c\u4e0d\u80fd\u50cf jQuery ajax \u4e00\u6a23\u4f7f\u7528 <code>data: $('#id_form_search').serialize()<\/code> \u9019\u6a23\u5c07\u6574\u500b\u8868\u55ae\u50b3\u905e\uff0c<\/p>\n<pre class=\"lang:default decode:true\">ajax: {\r\n    url: '\/admin\/v2\/User\/select',\r\n    type: 'POST',\r\n    data: function (d) {\r\n        d.id = id_form_search.find('[name=\"id\"]').val();\r\n        d.Name = id_form_search.find('[name=\"Name\"]').val();\r\n    },\r\n}<\/pre>\n<ul>\n<li>type: 'POST' HTTP method \u5982\u679c\u6c92\u6709\u975e GET \u4e0d\u53ef\u90fd\u662f POST \u4e0d\u7528\u8a0e\u8ad6<\/li>\n<li>data: function(d){} \u81ea\u5b9a\u7fa9\u641c\u5c0b\u689d\u4ef6\u6642\u8a2d\u5b9a<\/li>\n<\/ul>\n<p><a href=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" class=\"alignnone wp-image-11095 size-large\" src=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-1024x519.png\" alt=\"\" width=\"584\" height=\"296\" srcset=\"https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-1024x519.png 1024w, https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-300x152.png 300w, https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-768x389.png 768w, https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-1536x778.png 1536w, https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813-500x253.png 500w, https:\/\/blog.hoyo.idv.tw\/wp-content\/uploads\/2022\/11\/20221116_174813.png 1918w\" sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>--<\/p>\n<h2>\u4e00\u5b9a\u8981\u4f7f\u7528 .serialize()<\/h2>\n<p>\u5982\u679c\u4e00\u5b9a\u8981\u4f7f\u7528 .serialize() \u90a3\u5c31\u5fc5\u9808\u7e5e\u500b\u5708\uff0c\u5c07\u8868\u55ae\u5c0d\u61c9\u5230\u4e00\u500b\u8b8a\u6578\u5167<\/p>\n<pre class=\"lang:default decode:true\">ajax: {\r\n    url: '\/ajax.php',\r\n    type: 'POST',\r\n    data: function (d) {\r\n        d['search'] = $id_form_search.serialize();\r\n    },\r\n}<\/pre>\n<p>ajax.php<\/p>\n<ul>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.parse-str.php\" target=\"_blank\" rel=\"noopener\">PHP: parse_str - Manual<\/a><\/li>\n<\/ul>\n<pre class=\"lang:php decode:true\">parse_str($_POST['search'], $post);<\/pre>\n<p>\u4f7f\u7528 PHP parse_str() \u5c31\u53ef\u4ee5\u5c07 JavaScript serialize() \u8f49\u63db\u56de PHP \u7684\u9663\u5217<\/p>\n<p>--<\/p>\n<h2>Ajax \u4e8b\u4ef6<\/h2>\n<p>\u524d\u9762\u5c07 ajax \u52a0\u8f09\u95dc\u9589\uff0c\u56e0\u70ba\u8981\u63db\u4e0a\u81ea\u5df1\u7684 ajax loader\uff0c\u9019\u6642\u5c31\u8981\u5957\u4e0a Event<\/p>\n<p>\u4e00\u822c\u4f7f\u7528\u7684\u5c31\u662f preXhr.dt \u57f7\u884c ajax \u524d\u4ee5\u53ca xhr.dt ajax \u5b8c\u6210\u9019\u5169\u500b event<\/p>\n<ul>\n<li><a href=\"https:\/\/datatables.net\/reference\/event\/\" target=\"_blank\" rel=\"noopener\">Events (datatables.net)<\/a><\/li>\n<li><a href=\"https:\/\/gasparesganga.com\/labs\/jquery-loading-overlay\/\" target=\"_blank\" rel=\"noopener\">jQuery LoadingOverlay - Gaspare Sganga<\/a><\/li>\n<\/ul>\n<pre class=\"lang:js decode:true\">let $table = $('#id_table_1');\r\n\r\n\/\/ ajax \u524d\u52a0\u8f09...\r\n$table.on('preXhr.dt', function() {\r\n    $.LoadingOverlay(\"show\", {\r\n        background: \"rgba(100,100,100,0.1)\",\r\n        size: \"8\",\r\n    });\r\n});\r\n\r\n\/\/ \u5b8c\u6210\r\n$table.on('xhr.dt', function() {\r\n    $.LoadingOverlay(\"hide\");\r\n\r\n    $('html, body').animate({\r\n        scrollTop: $(\".dataTables_wrapper\").offset().top\r\n    }, 10);\r\n});<\/pre>\n<p>--<\/p>\n<h2>\u5f48\u7a97\u8a0a\u606f<\/h2>\n<p>\u5982\u679c ajax \u6709\u56de\u50b3\u8a0a\u606f\u9700\u8981\u986f\u793a\u6216\u8655\u7406\uff0c\u4e5f\u662f\u4f7f\u7528 xhr.dt event \u4f86\u8655\u7406<\/p>\n<ul>\n<li><a href=\"https:\/\/datatables.net\/forums\/discussion\/66938\/show-error-message-in-datatables-table\" target=\"_blank\" rel=\"noopener\">Show error message in DataTables table? \u2014 DataTables forums<\/a><\/li>\n<\/ul>\n<p>\u9019\u88e1\u7684\u7bc4\u4f8b\u525b\u597d\u548c\u6211\u7684\u4f7f\u7528\u74b0\u5883\u4e00\u81f4\uff0c\u76f4\u63a5\u4f7f\u7528\u5373\u53ef<\/p>\n<pre class=\"lang:js decode:true\">const $table = $('#id_table_1');\r\n$table.on('xhr.dt', function(e, settings, json, xhr) {\r\n    if ( json['message'] ){\r\n        new jBox('Notice', {\r\n            content: '\u932f\u8aa4\uff01' + json['message'],\r\n            color: 'red',\r\n            position: {x: 'center', y: 'center'},\r\n            zIndex: 12000,\r\n            autoClose: 3000\r\n        });\r\n    }\r\n});<\/pre>\n<p>--<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"11054\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,050&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>-- \u53c3\u8003\u8cc7\u6e90 DataTab...<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"11054\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,050&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[262],"tags":[342],"_links":{"self":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/11054"}],"collection":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11054"}],"version-history":[{"count":14,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/11054\/revisions"}],"predecessor-version":[{"id":11498,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/11054\/revisions\/11498"}],"wp:attachment":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11054"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11054"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}