• Вывод двух переменных с AJAX?

    @DiaTMss
    Есть форма

    spoiler
    <form id="book_form" method="POST" action="/submit/book">
            <div id="message">
                <?php if (!empty($_SESSION['messages'])) echo $_SESSION['messages'];?>
            </div>
            <div>
                <label for="title">Title</label>
                <input type="text" name="title" id="title" class="u-full-width" autocomplete="off" value="<?php if (!empty($_SESSION['title'])) echo $_SESSION['title'];?>">
            </div>
            <div>
                <label for="author">Author</label>
                <input type="text" name="author" id="author" class="u-full-width" autocomplete="off" value="<?php if (!empty($_SESSION['author'])) echo $_SESSION['author'];?>">
            </div>
            <div>
                <label for="isbn">ISBN#</label>
                <input type="text" name="isbn" id="isbn" class="u-full-width" autocomplete="off" value="<?php if (!empty($_SESSION['isbn'])) echo $_SESSION['isbn'];?>">
            </div>
            <div>
                <input type="submit" name="submit" value="Submit" class="u-full-width">
            </div>
        </form>


    Получаем данные из формы

    spoiler
    document.getElementById('book_form').addEventListener('submit', function(event)
    	{
    		var title  = document.getElementById('title').value,
    			author = document.getElementById('author').value,
    			isbn   = document.getElementById('isbn').value;
    
    		title  = title.trim();
    		author = author.trim();
    		isbn   = isbn.trim();
    
    		var params = 'title=' + title + '&author=' + author + '&isbn=' + isbn + '&submit=Submit';
    
    		getAjax('POST', '/submit/book', params, getShowAlert);
    
    		event.preventDefault();
    	}, false);


    spoiler
    function getAjax(method, uri, params, action)
    {
    	xhr.open(method, uri, true);
    
    	if (xhr && method === 'GET')
    	{
    		xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    	}
    
    	else if (xhr && method === 'POST')
    	{
    		xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    		xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    	}
    
    	xhr.onreadystatechange = action;
    
    	xhr.send(params);
    }


    spoiler
    var getShowAlert = function()
    	{
    		if (xhr.readyState === 4)
    		{
    			if (xhr.status === 200)
    			{
    				var mes = JSON.parse(xhr.responseText);
    
    				if (mes.message.error)
    				{
    					showAlert(mes.message.error, 'error');
    				}
    
    				else if(mes.message.success)
    				{
    					getAjax('GET', '/', null, getContent);
    					showAlert(mes.message.success, 'success');
    					clearFields();
    				}
    			}
    
    			else console.log(xhr.status + ' (' + xhr.statusText + ')');
    		}
    	}


    Нужен ещё csrf token

    spoiler
    function isAjax() { return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH'])) ? true : false;}
    
        $uri = $_SERVER['REQUEST_URI'];
        
       else if ($uri === '/submit/book')
        {
            if (isAjax())
            {
                if ($_SERVER['REQUEST_METHOD'] === 'POST')
                {
                    if (isset($_POST['submit']) && !empty($_POST['submit']))
                    {
                        $title  = htmlspecialchars(trim($_POST['title']));
                        $author = htmlspecialchars(trim($_POST['author']));
                        $isbn   = htmlspecialchars(trim($_POST['isbn']));
    
                        if (empty($title) || empty($author) || empty($isbn)) echo '{"message":{"error":"Please fill in all fields"}}';
    
                        else
                        {
                            if ($models->insertItem($title, $author, $isbn)) echo '{"message":{"success":"Book item create!"}}';
                            else echo '{"message":{"error":"Book item no create!"}}';
                        }
                    }
                }
            }
    
            else
            {
                if ($_SERVER['REQUEST_METHOD'] === 'POST')
                {
                    if (isset($_POST['submit']) && !empty($_POST['submit']))
                    {
                        $title  = htmlspecialchars(trim($_POST['title']));
                        $author = htmlspecialchars(trim($_POST['author']));
                        $isbn   = htmlspecialchars(trim($_POST['isbn']));
    
                        if (empty($title) || empty($author) || empty($isbn))
                        {
                            $_SESSION['title']  = $title;
                            $_SESSION['author'] = $author;
                            $_SESSION['isbn']   = $isbn;
                            $_SESSION['messages'] = '<div class="error">Please fill in all fields</div>';
    
                            header('Location: /');
                            exit;
                        }
    
                        else
                        {
                            if ($models->insertItem($title, $author, $isbn))
                            {
                                $_SESSION['messages'] = '<div class="success">Book Added!</div>';
    
                                header('Location: /');
                                exit;
                            }
                        }
                    }
                }
            }
        }
    Ответ написан
    1 комментарий
  • Как сделать таблицу с произвольным количеством полей?

    coderisimo
    @coderisimo
    table_1 : id, title
    table_2: id, field, value - id ссылается на первую таблицу

    select* from table_2 where id = 1 // получаем все поля связанные с первой записью в таблице 1

    select* from table_2 where id = 1 AND field='лишний вес' // получаем поле лишний вес для первой записи в таблице 1
    Ответ написан
    Комментировать
  • Обнуляем переменную при выходе из цикла?

    coderisimo
    @coderisimo Куратор тега JavaScript
    Ну-ну ))))
    вы объявили переменную : var ValidatorCountErros;
    затем стартуете асинхронную ф-цию : $.ajax(.....
    и не дожидаясь ее завершения пытаетесь работать с переменной ValidatorCountErros , которая еще НЕ ИЗМЕНИЛАСЬ . Так как $.ajax - еще не закончился!

    суть ошибки ясна? )
    Ответ написан
    Комментировать
  • Bootstrap, не могу закрыть и открыть модал через JS?

    coderisimo
    @coderisimo
    Попробуйте заменить :
    $('#alertModal').modal('show');
    на
    setTimeout(function(){
     $('#alertModal').modal('show'); 
        
    },1000);
    Ответ написан
    2 комментария
  • Не работает функция JS?

    coderisimo
    @coderisimo
    А так ?
    $(document).ready(function () {
      $('body').on('click',  '.openelemets', function(){
        $('.modulemodule').show();
      });
    });
    Ответ написан
    Комментировать
  • Не раскрытая тайна LEFT JOIN?

    jemunjho
    @jemunjho
    Используйте GROUP BY + GROUP_CONCAT
    Либо сделайте пост-обработку результатов SQL запроса, сгруппировав данные по ID пользователя

    SELECT GROUP_CONCAT(post_comment.comment_content SEPARATOR ' ') FROM users GROUP BY users.user_id;
    Ответ написан
    1 комментарий
  • Вывести данные с помощью this?

    0xD34F
    @0xD34F Куратор тега JavaScript
    success: (data) => {
      $(this).toggleClass('like-active like_click').find('.like_count').html(data);
    },
    Ответ написан
    Комментировать
  • Почему данный код не работает в firefox?

    romandkoz
    @romandkoz
    id - это уникальный идентификатор. Не допустимо делать несколько элементов с одинаковым id.
    Ответ написан
    1 комментарий
  • Как удалить пробелы внутри текста?

    NeiroNx
    @NeiroNx
    Программист
    Наверно так, если я правильно понял суть.
    "    string to be          trimmed     ".replace(/\s+/g,' ').trim()  ->  "string to be trimmed"
    Ответ написан
    1 комментарий
  • При нажатии кнопки выделяется текст?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

    Ответ написан
    Комментировать
  • Как реализовать это на PHP?

    @sorokinfil
    Напишу по-старинке, не помню, что как в prepare'ах. tbl_1 и tbl_2 соответствуют порядку, в котором выводятся картинки, нужно заменить на имена своих таблиц.
    // Создаём переменную, в которую будем заносить инфу из БД
    $your_list = [];
    // Получаем id и username всех пользователей из tbl_1, id которых встречаются в tbl_2
    $query = $dbpdo->query
    ("
    	SELECT tbl_1.user_id, tbl_1.username
    	FROM tbl_1
    	INNER JOIN tbl_2 ON tbl_2.id = tbl_1.user_id
    ");
    // Извлекаем, формируем двумерный массив
    while ($user = mysqli_fetch_assoc ($query))
    	$your_list[] = $user;
    // Выводим через echo
    foreach ($your_list as $user)
    	echo $user['user_id'] . ': ' . $user['username'] . '<br />';
    Ответ написан
    1 комментарий