Итак. Есть некий скрипт, часть из которого приведена ниже, который отправляет 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 "Ошибка.";
}
?>
Буду благодарен за любую помощь.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени! Хочу спросить совета по поводу хранения данных в redis как это сделать быстрее и оптимальней в плане кода и быстродействия...
Данный код рисует сетку календаря, календарь рисуется на месяцВыбираются все данные за этот месяц (если есть такие) и при наличии данных в базе...