diff --git a/media/js/office/config.js b/media/js/office/config.js
index a0953fa8690840fef5bf34ef2cb31a05df5b1572..3bd3fa44743a70c230f1d1365425da376938e444 100644
--- a/media/js/office/config.js
+++ b/media/js/office/config.js
@@ -1,20 +1,21 @@
 $(() => {
-    $('#config-save-button').click(function () {
+    $('.config-container input').change(function () {
+
         $(this).prop('disabled', true);
-        let config  = {
-            SemesterID : $("#SemesterID").val(),
-            HashKey : $("#HashKey").val(),
-            Logging : $("#Logging").prop('checked'),
-            SupportServiceEmail : $("#SupportServiceEmail").val(),
-            OpenIDAuthAllowed : $("#OpenIDAuthAllowed").prop('checked'),
-            GradeAuthAllowed : $("#GradeAuthAllowed").prop('checked'),
-            HTTPS : $("#HTTPS").prop('checked')
-        };
-        $.post(URLdir + 'handler/config/index', {config}).done(result => {
+        let type = $(this).attr("type");
+        let data;
+        if (type == "checkbox")
+            data = $(this).prop('checked');
+        else
+            data = $(this).val();
+        let id = $(this).attr("id");
+
+        $.post(URLdir + 'handler/config/index', {id, type, data}).done(_ => {
             Popup.success('Изменения сохранены');
-            location.reload();
-        }).fail(result => {
+        }).fail(_ => {
             Popup.error('Произошла ошибка');
+        }).always(_ => {
+            $(this).prop('disabled', false);
         });
     });
 });
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Controller/Handler/Config.php b/~dev_rating/application/classes/Controller/Handler/Config.php
index 0dcd4fb086cd3fc8e9135af1d9c1d2116586f2c7..f0934aa47e44c087f0ed38c473afdaef2aa36e8c 100644
--- a/~dev_rating/application/classes/Controller/Handler/Config.php
+++ b/~dev_rating/application/classes/Controller/Handler/Config.php
@@ -4,17 +4,16 @@ class Controller_Handler_Config extends Controller_Handler_Api
 {
     public function action_index() {
         $this->user->checkAccess(User::RIGHTS_ADMIN);
-        $config = $this->post["config"];
+
         $string = file_get_contents(APPPATH . "/config/general.json");
         $json_a = json_decode($string, true);
 
-        foreach ($config as $key => $value) {
-            if ($value === "false")
-                $value = false;
-            elseif ($value === "true")
-                $value = true;
-            $json_a[$key] = $value;
-        }
+        $id = $this->post["id"];
+        $data = $this->post["data"];
+        $type = $this->post["type"];
+        if ($type === "checkbox")
+            $data === "true" ? $data = true : $data = false;
+        $json_a[$id] = $data;
 
         $string = json_encode($json_a, JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
         file_put_contents(APPPATH . "/config/general.json", $string);
diff --git a/~dev_rating/application/views/office/config/index.twig b/~dev_rating/application/views/office/config/index.twig
index ab633bd6c02ed5a2acbb98e0c53beda597a8cb32..31d1cb0cbfeaff9edb840f670818310065ef04b5 100644
--- a/~dev_rating/application/views/office/config/index.twig
+++ b/~dev_rating/application/views/office/config/index.twig
@@ -49,10 +49,6 @@
             <input class="defaultForm" type="checkbox" id="Https" {{ Config.Https == true  ? "checked" : "unchecked"}}>
         </label>
 
-        <button class="defaultForm BlueButton P2Width" id="config-save-button">
-            Сохранить
-        </button>
-
     </div>
 
 {% endblock %}