Перед изменением стиля элемента необходимо обновить страницу

Я пытаюсь настроить корзину с проверкой jQuery ajax, функция на моей стороне сервера пока работает без сбоев, моя настоящая проблема - после добавления товара в корзину. Имя элемента должно менять цвет, чтобы указать, что элемент уже выбран, но необходимо вручную обновить страницу, чтобы начать изменение цвета имени элемента.

Вот картинка ниже:

Перед изменением стиля элемента необходимо обновить страницу

После того, как я нажму кнопку «+», вот результат:

Перед изменением стиля элемента необходимо обновить страницу

Как вы можете видеть на картинке, я обвил выбранный элемент, цвет которого должен измениться после выбора элемента.

Пожалуйста, посмотрите код здесь:

$(document).ready(function(){   
$(".form-item").submit(function(e){
    var form_data = $(this).serialize();
    var button_content = $(this).find('button[type=submit]');
    button_content.html('Adding...'); //Loading button text 

    $.ajax({ //make ajax request to cart_process.php
        url: "cart_process.php",
        type: "POST",
        dataType:"json", //expect json value from server
        data: form_data
    }).done(function(data){ //on Ajax success
        $("#cart-info").html(data.items); //total items in cart-info element
        button_content.html('+'); //reset button text to original text
        alert("Item added to Cart!"); //alert user

    if ($(".shopping-cart-box").css("display") == "block"){ //if cart box is still visible
        loadinc(); //trigger to update data

    }
    })
    e.preventDefault();
    });

    //Show Items in Cart
    function loadinc(){
        $(document).ready(function(){
        $(".shopping-cart-box").show(); //display cart box              
        $("#shopping-cart-results" ).load( "cart_process.php", {"load_cart":"1"}); //Make ajax request using jQuery Load() & update results

        });
    }
    loadinc();

});

А вот HTML-файл

<?php
//List products from database
$results = $mysqli_conn->query("SELECT * FROM tbldata where category = 'SALAD'");
if (!$results){
    printf("Error: %s\n", $mysqli_conn->error);
    exit;
}


//Display fetched records as you please
$products_list =  '<ul class = "products-wrp">';

while($row = $results->fetch_assoc()) {
$products_list .= '
<li>
<form class = "form-item">
<h4>'.

(in_array($row["name"],array_column($_SESSION["products"],'name')) ? '<span style = "color:#b91e2d;">'.$row["name"].'</span>' :  $row["name"])

.'</h4>

<div>Price : '.$currency.' '.$row["price"].'<div>
<div class = "item-box">


    <div>
    Qty :
    <select name = "product_qty">
    <option value = "1">1</option>
    <option value = "2">2</option>
    <option value = "3">3</option>
    <option value = "4">4</option>
    <option value = "5">5</option>
    </select>
    </div>      

    <input name = "product_code" type = "hidden" value = "'.$row["product_code"].'">
    <button type = "submit">+</button>
</div>
</form>
</li>
';

}
$products_list .= '</ul></div>';

echo $products_list;
?>

Так что измените примененный CSS там, где вы делаете alert("Item added to Cart!");

Patrick Q 14.05.2018 20:04

в вашей функции done - success добавьте свой css, чтобы изменить цвет выбранного элемента, вам не хватает вашего стиля там

karthik 14.05.2018 20:05

привет @karthik, мой стиль находится в моем html файле, я включил сокращенный оператор if, чтобы проверить, выбрана ли переменная в массиве.

zeus2026 14.05.2018 20:13

Ваша жизнь была бы намного проще с таким фреймворком, как Vue, просто предложение

Dhiraj 14.05.2018 20:24

Я новичок, сэр, мне нужно изучить больше, прежде чем я перейду к другому фреймворку :(

zeus2026 14.05.2018 20:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
95
2

Ответы 2

Вы забыли эту строчку:

.css('color', '#b91e2d');

Как это:

$(document).ready(function(){   
    $(".form-item").submit(function(e){
        var title = $(this).closest('span');
        var form_data = $(this).serialize();
        var button_content = $(this).find('button[type=submit]');
        button_content.html('Adding...'); //Loading button text 

        $.ajax({ //make ajax request to cart_process.php
            url: "cart_process.php",
            type: "POST",
            dataType:"json", //expect json value from server
            data: form_data
        }).done(function(data){ //on Ajax success
            $("#cart-info").html(data.items); //total items in cart-info element
            button_content.html('+'); //reset button text to original text
            alert("Item added to Cart!"); //alert user
            title.css('color','#b91e2d');

            if ($(".shopping-cart-box").css("display") == "block"){ //if cart box is still visible
                loadinc(); //trigger to update data
            }
        })
        e.preventDefault();
    });

    //Show Items in Cart
    function loadinc(){
        $(document).ready(function(){
            $(".shopping-cart-box").show(); //display cart box              
            $("#shopping-cart-results" ).load( "cart_process.php", {"load_cart":"1"}); //Make ajax request using jQuery Load() & update results
        });
    }
    loadinc();
});

А также ваш товар должен быть:

$products_list .= '
<li>
<form class = "form-item">
<h4><span'.

(in_array($row["name"],array_column($_SESSION["products"],'name')) ? ' style = "color:#b91e2d;" :  "")

. '>' . $row["name"] . '</span></h4>'...etc.

он не запускается, сэр, его также необходимо обновить перед изменением цвета

zeus2026 14.05.2018 20:17

Вам нужно поймать элемент, который вы нажимаете, и сохранить его в переменной. Я отправлю редактирование с полным кодом.

NiMusco 14.05.2018 20:18

это не работает, сэр. Я попытался поместить имя класса в свой диапазон и вызвать его после функции предупреждения, но ничего не изменилось, поэтому необходимо обновить страницу, чтобы изменить цвет имени (in_array ($ row ["name"], array_column ($ _ SESSION [ "products"], 'n‌ ame'))? '<span class = "testing" style = "color: # b91e2d;">'. $ row ["name"]. '</span>': $ row ["название"])

zeus2026 14.05.2018 20:30

Это потому, что вы печатаете «<span>», только если продукт выбран. Поэтому, когда это не так (помните, что ajax запускается ПОСЛЕ загрузки вашего PHP), там нет промежутка для изменения стиля. Посмотрите мой обновленный ответ.

NiMusco 14.05.2018 20:40

это не работает, сэр. необходимо обновить страницу для работы.

zeus2026 14.05.2018 21:53

я что-то упустил? Ошибка синтаксического анализа: синтаксическая ошибка, непредвиденный ';'

zeus2026 15.05.2018 08:23

Спасибо, ребята, за помощь.

Мне нужно положить

window.location.reload();

после функции оповещения.

Спасибо, парни. : D

Основной причиной использования AJAX является перезагрузка страницы избегать.

Stephen P 14.05.2018 22:10

Да, это неправильный ответ. Я ищу ответ @NiMusco, мое плохое.

zeus2026 14.05.2018 23:34

Другие вопросы по теме