AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рд░рд▓ рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдХреНрдпреВрдП рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫрд╛ рдЧрдпрд╛ , рд╣рд░ рдЬрдЧрд╣ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рдХреНрдпрд╛рдВрд╢ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрди рдХреЛ рдЦреБрдж рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?


рдХрднреА-рдХрднреА рдХреБрдЫ рдмрд╣реБрдд рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдПред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд░рди рд╕рдордп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдпрд╛ рдЙрд╕рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдмрдврд╝рддрд╛ рд╣реИред

рдореИрдВ рдлрд╛рдЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рднрд╛рдЧреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЫрд╡рд┐
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рджреНрдзрд╛рдВрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ - рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп:
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрд╕ рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЗрд╕ рдирдВрдмрд░ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЧреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рд╣реА



рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:

index.html
<html> <head> <title>ScriptOffset -      </title> <script type="text/javascript" src="http://yandex.st/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript" src="scriptoffset.js"></script> <link rel="stylesheet" type="text/css" href="scriptoffset.css"> </head> <body> <div class="form"> <input id="url" name="url"> <input id="offset" name="offset" type="hidden"> <div class="progress" style="display: none;"> <div class="bar" style="width: 0%;"></div> </div> <a href="#" id="runScript" class="btn" data-action="run"></a> <a href="#" id="refreshScript" class="btn" style="display: none;"></a> </div> </body> </html> 

scriptoffset.php
 <?php //    Ajax if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;} //      action        . $action = $_POST['action']; if (empty($action)) {return;} $count = 50; $step = 1; //      $url = $_POST['url']; if (empty($url)) return; $offset = $_POST['offset']; // ,     $offset = $offset + $step; if ($offset >= $count) { $sucsess = 1; } else { $sucsess = round($offset / $count, 2); } //     (       ) $output = Array('offset' => $offset, 'sucsess' => $sucsess); echo json_encode($output); 

scriptoffset.js
 function setCookie (url, offset){ var ws=new Date(); if (!offset && !url) { ws.setMinutes(10-ws.getMinutes()); } else { ws.setMinutes(10+ws.getMinutes()); } document.cookie="scriptOffsetUrl="+url+";expires="+ws.toGMTString(); document.cookie="scriptOffsetOffset="+offset+";expires="+ws.toGMTString(); } function getCookie(name) { var cookie = " " + document.cookie; var search = " " + name + "="; var setStr = null; var offset = 0; var end = 0; if (cookie.length > 0) { offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(";", offset) if (end == -1) { end = cookie.length; } setStr = unescape(cookie.substring(offset, end)); } } return(setStr); } function showProcess (url, sucsess, offset, action) { $('#url, #refreshScript').hide(); $('.progress').show(); $('#runScript').text('!'); $('.bar').text(url); $('.bar').css('width', sucsess * 100 + '%'); setCookie(url, offset); $('#runScript').click(function(){ document.location.href=document.location.href }); scriptOffset(url, offset, action); } function scriptOffset (url, offset, action) { $.ajax({ url: "http://bfmn.ru/scriptoffset/scriptoffset.php", type: "POST", data: { "action":action , "url":url , "offset":offset }, success: function(data){ data = $.parseJSON(data); if(data.sucsess < 1) { showProcess(url, data.sucsess, data.offset, action); } else { setCookie(); $('.bar').css('width','100%'); $('.bar').text('OK'); $('#runScript').text(''); } } }); } $(document).ready(function() { var url = getCookie("scriptOffsetUrl"); var offset = getCookie("scriptOffsetOffset"); if (url && url != 'undefined') { $('#refreshScript').show(); $('#runScript').text(''); $('#url').val(url); $('#offset').val(offset); } $('#runScript').click(function() { var action = $('#runScript').data('action'); var offset = $('#offset').val(); var url = $('#url').val(); if ($('#url').val() != getCookie("scriptOffsetUrl")) { setCookie(); scriptOffset(url, 0, action); } else { scriptOffset(url, offset, action); } return false; }); $('#refreshScript').click(function() { var action = $('#runScript').data('action'); var url = $('#url').val(); setCookie(); scriptOffset(url, 0, action); return false; }); }); 

scriptoffset.css
 input { font-size: 13px; margin: 0; padding: 0 3px; vertical-align: middle; border: 1px solid #CCCCCC; border-radius: 3px 3px 3px 3px; color: #808080; display: inline-block; font-size: 13px; height: 26px; line-height: 18px; width: 243px; -moz-transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset; } .btn { font-size: 13px; padding: 5px 8px; background-color: #0064CD; background-image: -moz-linear-gradient(center top , #049CDB, #0064CD); background-repeat: repeat-x; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); color: #FFFFFF; display: inline-block; vertical-align: middle; border-radius: 3px 3px 3px 3px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); text-decoration: none; } .btn:hover { background-position: 0 -15px; } .btn:active { box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25) inset, 0 1px 2px rgba(0, 0, 0, 0.05); } .progress { font-size: 13px; margin: 0; vertical-align: middle; background-color: #F7F7F7; background-image: -moz-linear-gradient(center top , #F5F5F5, #F9F9F9); background-repeat: repeat-x; border-radius: 4px 4px 4px 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; height: 28px; width: 250px; overflow: hidden; display: inline-block; } .progress .bar { background-color: #0E90D2; background-image: -moz-linear-gradient(center top , #149BDF, #0480BE); background-size: 40px 40px; -moz-box-sizing: border-box; -moz-transition: width 0.6s ease 0s; background-repeat: repeat-x; box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15) inset; color: #FFFFFF; float: left; font-size: 12px; height: 100%; text-align: left; padding: 5px 8px; font-size: 13px; text-shadow: 1px 1px #333; white-space: nowrap; } div.form { margin: 150px auto 0; width: 500px; } 


рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП css рдиреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реЗ рдХрдИ рдирд┐рдпрдо рд▓рд┐рдПред

рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИ?

Url рдлрд╝реАрд▓реНрдб рдореЗрдВ, рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБред рдПрдХ рдкреНрд░рдЧрддрд┐ рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдмреИрдарддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП 100% рддрдХ рд░реЗрдВрдЧрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп:


рдпрджрд┐ рд╕рдореБрджрд╛рдп рдХреЗ рдкрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЪрд░рдг-рджрд░-рдЪрд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рддреЛ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рдпреБрдкреАрдбреАред MODX рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдБ рд╣реИ ред

Source: https://habr.com/ru/post/In153731/


All Articles