Отправка HTML кода из Texarea

339
03 июня 2017, 17:41

Итак. Есть некий скрипт, часть из которого приведена ниже, который отправляет HTML код из поля <textarea>:

function editothers(id, fn, fv) {
    $('textarea[name=other' + fn + ']').removeClass('success').addClass('inprocess');
    console.log('textarea[name=other' + fn + ']');
    $.ajax({
        type: 'POST',
        url: '/php/other_shop/edit_other_shop.php',
        data: {
            item_id: id,
            o_field_id: fn,
            o_field_value: fv
        },
        success: function(response) {
            if (response) {
                getothers(id);
                setTimeout('classes('+fn+')', 1000);
            }
        }
    });
}

Далее - PHP:

<?php
//admin
echo $_SERVER['HTTP_REFERER'];
include_once('db.php');
$item_id = $_POST['item_id'];
$o_field_id = 'o_field_'.$_POST['o_field_id'];
$o_field_value = $_POST['o_field_value'];
    echo $o_field_id;
    if ( isset($_POST['item_id']) )
    {
        /*try
            {
                $db->exec("INSERT INTO other_shop1  
                                             (" . $o_field_id . ", o_field_value, item_id) VALUES (" . $o_field_id . ", " . $o_field_value . ", " . $item_id . " )
                            ");

            }
        catch (PDOException $e)
            {
                die($e->getMessage());
                echo "Ошибка. Данные не записаны.";
            }*/

            try{
                    $st_check_double = $db->query("SELECT item_id FROM other_shop1 WHERE item_id='".$item_id."'");
                    $resultscheck_double = $st_check_double->fetch();
                    if (!$resultscheck_double){
                        $db->exec("INSERT INTO other_shop1  
                        ('$o_field_id', item_id)
                                             VALUES 
                        ( '$o_field_value' ,  '$item_id' )
                                             ");
                        echo '<div class="alert alert-info">Код был только что добавлен</div>';
                    }
                    else
                    {
                        $db->exec("UPDATE other_shop1  
                                            SET
                        '$o_field_id'='$o_field_value'

                                            WHERE
                        item_id='$item_id'
                                             ");                        
                    }
                }
                catch (PDOException $e)
                {
                    die($e->getMessage());
                    echo "Ошибка проверки дублей";
                }


          /*  try
            {
                $db->exec("UPDATE other_shop1  
                                             SET     o_field_".$o_field_id."='" . $o_field_value . "'
                                             WHERE   item_id='" . $item_id . "'
                            ");
            }
        catch (PDOException $e)
            {
                echo "Ошибка. Данные не записаны.";
                die($e->getMessage());
            }*/
    }
?>

Вопрос первый. Все данные отправляются, однако возле кавычек появляется обратный слеш (\"). Для чего происходит экранирование спец.символов в JS я знаю, а вот можно ли этого избежать на этапе отправки в конкретном примере?

Вопрос второй. Если все же избежать нельзя, то можно ли при выдаче данных пройтись по всему содержимому и убрать лишний символ, например, через .replace? Вот участки отвечающие за вывод данных:

function getothers(id) {
    $.ajax({
        type: 'POST',
        url: '/php/other_shop/show_other_shop.php',
        data: {
            item_id: id
        },
        success: function(response) {
            if (response) {
                var arr = new Array;
                var arr = jQuery.parseJSON(response);
                for (var i = 40; i >= 10; i--) {
                    if ( arr['o_field_' + i] != null && arr['o_field_' + i] != '' )
                    $('#others'+i).html(arr['o_field_' + i]).parent().show();
                }
            }
        }
    })
};

и php

<?php
//frontend
include_once('db.php');
$item_id = $_POST['item_id'];
try
            {
                $st2 = $db->query("SELECT * FROM other_shop1 WHERE item_id='".$item_id."'");
                $results2 = $st2->fetchAll();
                if ($results2)
                            {
                                foreach ($results2 as $row2)
                                {
                                  //echo "<pre>";
                                      echo json_encode($row2);
                                  //echo "</pre>";
                                }
                            }
            }
        catch (PDOException $e)
            {
                die($e->getMessage());
                echo "Ошибка.";
            }
?>

Буду благодарен за любую помощь.

READ ALSO
Хранение массивов в Redis

Хранение массивов в Redis

Доброго времени! Хочу спросить совета по поводу хранения данных в redis как это сделать быстрее и оптимальней в плане кода и быстродействия...

468
Выборка из базы и сравнение

Выборка из базы и сравнение

Данный код рисует сетку календаря, календарь рисуется на месяцВыбираются все данные за этот месяц (если есть такие) и при наличии данных в базе...

305