За последние 24 часа нас посетили 21439 программистов и 1023 робота. Сейчас ищут 656 программистов ...

Как дописать(изменить) localStorage на запрос через AJAX?

Тема в разделе "JavaScript и AJAX", создана пользователем Pavel_16, 8 апр 2020.

Метки:
  1. Pavel_16

    Pavel_16 Новичок

    С нами с:
    8 апр 2020
    Сообщения:
    3
    Симпатии:
    0
    Всем привет, нужна очень помощь по данному вопросу, за ранние благодарен!

    Есть некий Локальное хранилище данных(по раскраски), а нужно изменить так, что-бы работало через AJAX-запрос(сам не понимаю пока как), через это: Сервис AjaxStringStorage2 предназначен для сохранения в базе данных и получения из базы данных произвольных именованных строк посредством jQuery AJAX.(местный походу).
    Формат сохраняемых строк может быть любым, в том числе это могут быть JSON-строки.!!???-

    https://jsfiddle.net/635ecvdm/2/ - здесь ссылка на весь JS по пунктам где нужно сделать правки....

    А вот что есть в рабочей тетрадиможет как-то поможет)
    Очень прошу помочь исправить, очень.......
    Серверный скрипт: https://fe.it-academy.by/AjaxStringStorage2.php
    Параметры передаются методом POST.
    В параметре f передаётся команда: READ/INSERT/LOCKGET/UPDATE.
    Результат AJAX-запроса — хэш со свойстами result (строка-результат) и error (сообщение об ошибке).
    READ — чтение строки
    параметры:
    f=READ
    n=имя
    Возвращает строку с именем имя.
    Если такой строки нет в базе данных, возвращается пустая строка.
    INSERT — добавление новой строки
    параметры:
    f=INSERT
    n=имя
    v=значение
    Добавляет в базу данных новую строку с именем имя и значением значение. Имя должно состоять из латинских букв, цифр и знака подчёркивания; для избежания конфликтов, следует начинать имя со своей фамилии и названия проекта.
    В случае успеха возвращает строку "ОК".
    Если строка с указанным именем в базе данных уже есть, возникает ошибка.
    LOCKGET — чтение строки и планирование её изменения
    параметры:
    f=LOCKGET
    n=имя
    p=пароль
    Возвращает строку с именем имя и одновременно её блокирует на 1 минуту для последующего изменения командой UPDATE. Для успешного изменения требуется в команде UPDATE предоставить тот же пароль, который был указан в команде LOCKGET.
    При попытке заблокировать уже заблокированную другим пользователем строку делается несколько попыток блокирования через некоторое время; затем возникает ошибка.
    UPDATE — изменение заблокированной строки
    параметры:
    f=UPDATE
    n=имя
    p=пароль
    v=значение
    Для строки с именем имя изменяет значение на значение, одновременно снимая с неё блокировку. Для успешного изменения требуется предоставить тот же пароль, который был указан в команде LOCKGET.
    Возвращает строку "ОК".
    При попытке изменения незаблокированной строки, при попытке слишком позднего (через 1 минуту после блокирования) изменения строки, при неправильном указании пароля возникает ошибка.
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Pavel_16 оплата будет?)

    а так что то типо такого
    Код (Javascript):
    1. document.addEventListener('DOMContentLoaded', function() {
    2.     var send = {
    3.         'f' : 'INSERT',
    4.         'n' : 'имя',
    5.         'v' : 'значение'
    6.     };
    7.  
    8.     postAjax('AjaxStringStorage2.php', send, function(data){
    9.         console.log(data);
    10.     });
    11. });
    12.  
    13. function postAjax(url, data, success) {
    14.     var log = false;
    15.     var params = typeof data == 'string' ? data : Object.keys(data).map(
    16.             function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) }
    17.         ).join('&');
    18.  
    19.     var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    20.     xhr.open('POST', url);
    21.     xhr.onreadystatechange = function() {
    22.         if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); }
    23.         if (xhr.status==500) {
    24.             if( xhr.responseText.length !== 0 && log === false){
    25.                 console.log(xhr.responseText);
    26.                 log = true;
    27.             }
    28.         };
    29.     }  
    30.     xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    31.     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    32.     xhr.send(params);
    33.     return xhr;
    34. }
     
    #2 Artur_hopf, 8 апр 2020
    Последнее редактирование: 8 апр 2020
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Ну или так:
    HTML:
    1. <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    2.  
    3. document.addEventListener('DOMContentLoaded', function() {
    4.  
    5.     var send = {
    6.         'f' : 'INSERT',
    7.         'n' : 'имя',
    8.         'v' : 'значение'
    9.     };
    10.  
    11.     $.post( "https://fe.it-academy.by/AjaxStringStorage2.php", send)
    12.         .done(function( data ) {
    13.             console.log(data);
    14.         });
    15.  
    16. });
    ну и блатной способ, не на всех браузерах заработает:
    Код (Javascript):
    1. let send = {
    2.     'f' : 'INSERT',
    3.     'n' : 'имя',
    4.     'v' : 'значение'
    5. };
    6.  
    7. let url = "https://fe.it-academy.by/AjaxStringStorage2.php";
    8.  
    9. fetch(url, send)
    10.   .then(response => response.json())
    11.   .then(commits => console.log(commits));
     
    #3 Artur_hopf, 8 апр 2020
    Последнее редактирование: 8 апр 2020
    Pavel_16 нравится это.
  4. Pavel_16

    Pavel_16 Новичок

    С нами с:
    8 апр 2020
    Сообщения:
    3
    Симпатии:
    0
    Artur_hopf- ЧЕЛОВЕЧЕСКОЕ ОГРОМНОЕ СПАЧИБО!, препод зверь, сначала одно, а теперь нужно так!
    Инфы мало в нети , да и примеров вообще нет особо!
    Щас попробуем в проект вкрутить это....
    --- Добавлено ---
    это лучше в какую страницу встроить, я так понимаю, что там, где выдаёт рекорды????
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Туда где у вас форма
     
  6. Pavel_16

    Pavel_16 Новичок

    С нами с:
    8 апр 2020
    Сообщения:
    3
    Симпатии:
    0
    у меня есть форма приветствия, которая запоминает имя или предлагает выбрать из списка уже зарегеных. А есть часть игры, которая передает время за которое пользователь выполнил данное задание. И они встречаются в таблице рекордов......