Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2015, 12:56
Аватар для tvixa
Аспирант
Отправить личное сообщение для tvixa Посмотреть профиль Найти все сообщения от tvixa
 
Регистрация: 09.09.2013
Сообщений: 33

Экранирование кавычек
Добрый день.
Хотела уточнить как правильно заэкранировать кавычки в данном случае, я вызываю функцию clickEditCampaing и передаю параметры списком и при наличии кавычек в самом тексте естественно происходит ошибка. Если в параметрах есть кавычки, то логика путает кавычки текста с " в функции и не может выбрать нужные параметры. Подскажите пожалуйста как корректно это оформить. Спасибо
$("#tbody-active-campaings").append("<tr class='tr-campaing' id='campaing_" + campaignId + "' bnrid='" + campaignId + "'>" +
                            "<td class='td-index'><strong>" + (i + 1) + "</strong></td>" +
                            "<td><img title='' alt='" + campaignTitle + "' src='" + baseUrl + imgPath + bannerTitle + "." + output_format + "' height='60' width='153'>" +
                            "<td style='word-wrap:break-word;'><button type='button' class='btn btn-xs' data-toggle='tooltip' data-placement='right' title='Редактировать акцию' onclick='clickEditCampaing("
                            + campaignId + ", &quot;" + campaignTitle + "&quot;, &quot;" + campaingDescr + "&quot;,&quot;" + campaingFullDescr + "&quot;,&quot;" + conditionsDescr + "&quot;,&quot;" + mrctId + "&quot;,&quot;" + campStart + "&quot;,&quot;" + campStop + "&quot;,&quot;" + bannerTitle + "&quot;, &quot;" + link + "&quot;)'><span class='glyphicon glyphicon-pencil'></span></button></td>" +
                            "</tr>");

Последний раз редактировалось tvixa, 18.11.2015 в 13:01.
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2015, 13:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от tvixa
как правильно заэкранировать кавычки
Вот несколько вариантов...

alert('1. "test"');
alert("2. 'test'");
alert("3. \"test\"");
alert('4. \'test\'');
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2015, 13:26
Аватар для tvixa
Аспирант
Отправить личное сообщение для tvixa Посмотреть профиль Найти все сообщения от tvixa
 
Регистрация: 09.09.2013
Сообщений: 33

Нет, это не совсем то, просто заэкранировать я могу, но при передаче параметров происходит путаница и скрипт не может понять где начало а где конец параметра из-за кавычки предположим названия ресторана
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2015, 13:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от tvixa
это не совсем то
Тогда сделай простой тестовый пример, а не ту портянку... Дабы понять про что ты спрашиваешь.
Ответить с цитированием
  #5 (permalink)  
Старый 18.11.2015, 13:55
Аватар для tvixa
Аспирант
Отправить личное сообщение для tvixa Посмотреть профиль Найти все сообщения от tvixa
 
Регистрация: 09.09.2013
Сообщений: 33

Я получаю xml считываю из него все данные, в частности есть поля с кавычками(название ресторана, компании итд), присваиваю эти значения переменной и передаю их дальше в функцию, передаю их списком в кавычках, это форма записи при отправке, а из-за того,что кавычки присутствуют в названии именно campaignTitle происходит путаница, т.е. скрипт теряет границы передаваемого параметра. Сократила пример
campaignTitle = '"Турандот"';

<button type='button' class='btn btn-xs' title='Редактировать акцию' onclick='clickEditCampaing("+ campaignId + ", &quot;" + campaignTitle + "&quot;)'></button>

Последний раз редактировалось tvixa, 18.11.2015 в 14:11.
Ответить с цитированием
  #6 (permalink)  
Старый 18.11.2015, 14:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от tvixa
Сократила пример
campaignTitle = '"Турандот"';

<button type='button' class='btn btn-xs' title='Редактировать акцию' onclick='clickEditCampaing("+ campaignId + ", &quot;" + campaignTitle + "&quot;)'></button>
Если верить подсветке, он у тебя уже неправильный...

Последний раз редактировалось ksa, 18.11.2015 в 14:18.
Ответить с цитированием
  #7 (permalink)  
Старый 18.11.2015, 14:17
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Давай таки отталкиваться от этого...
Сообщение от tvixa
$("#tbody-active-campaings").append();
Какую строку ты имеешь? Какие переменные чему равны? И куда их значения собираешься вставлять?
Т.е. что в итоге нужно получить? Какую строку?
Ответить с цитированием
  #8 (permalink)  
Старый 18.11.2015, 14:45
Аватар для tvixa
Аспирант
Отправить личное сообщение для tvixa Посмотреть профиль Найти все сообщения от tvixa
 
Регистрация: 09.09.2013
Сообщений: 33

Это функция редактирования. При клике функции передаются соответствующие параметры.
Рассмотрим на примере 1-2 параметров. Я получаю xml и мне возвращается такое значение с кавычкой: <title>test&quot;</title>
Далее я пишу
var campaignTitle = ($(campaign).find("title").text());

То есть присваиваю переменной полученное значение, затем мне нужно это значение передать в функцию для дальнейшей обработки, что я и пытаюсь сделать вот тут
onclick='clickEditCampaing("+ campaignId + ", &quot;" + campaignTitle + "&quot;, &quot;" + campaingDescr + "&quot;,&quot;" + campaingFullDescr + "&quot;,&quot;" + conditionsDescr + "&quot;,&quot;" + mrctId + "&quot;,&quot;" + campStart + "&quot;,&quot;" + campStop + "&quot;,&quot;" + bannerTitle + "&quot;, &quot;" + link + "&quot;)'


Если кавычки во всех этих переменных отсутствуют скрипт отрабатывает корректно, функция принимает параметры и выводит в определенных input-ах.

Но вот засада, параметры разделены кавычкой и запятой именно в таком формате они передаются в функцию, но если в тексте который вернулся есть кавычка начинается путаница с границами параметров. Где заканчивается и начинается
Ответить с цитированием
  #9 (permalink)  
Старый 18.11.2015, 15:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

tvixa, давай поучимся делать тестовые примеры...
Сообщение от tvixa
Я получаю xml и мне возвращается такое значение с кавычкой: <title>test&quot;</title>
Т.е.
var campaign='<title>test&quot;</title>';

Так?
Сообщение от tvixa
Далее я пишу
var campaignTitle = ($(campaign).find("title").text());
Т.е.
var campaign='<title>test&quot;</title>';
var campaignTitle = ($(campaign).find("title").text());

Так?
Сообщение от tvixa
затем мне нужно это значение передать в функцию для дальнейшей обработки, что я и пытаюсь сделать вот тут
onclick='clickEditCampaing("+ campaignId + ", &quot;" + campaignTitle + "&quot;, &quot;" + campaingDescr + "&quot;,&quot;" + campaingFullDescr + "&quot;,&quot;" + conditionsDescr + "&quot;,&quot;" + mrctId + "&quot;,&quot;" + campStart + "&quot;,&quot;" + campStop + "&quot;,&quot;" + bannerTitle + "&quot;, &quot;" + link + "&quot;)'
Вот эту портянку сделай меньше, но достаточной для примера. И продолжи текст программы, что был выше.
Ответить с цитированием
  #10 (permalink)  
Старый 18.11.2015, 15:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Вот это тестовый пример

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var str='&quot;Test&quot;';
	$('body').append('<button onclick="alert('+"'"+str+"'"+')">Test</button>');
});
</script>
</head>
<body>
</body>
</html>

Его можно взять за основу и сделать свой тестовый пример...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная внутри кавычек atlasny jQuery 4 02.02.2015 21:06
Проблема использования кавычек lar_i_sa AJAX и COMET 13 20.02.2013 14:33
Экранирование кавычек animegirl Серверные языки и технологии 0 30.07.2011 04:56
Экранирование кавычек Johny Общие вопросы Javascript 1 13.07.2011 20:31
Как убрать эффект кавычек? FirstFrost Общие вопросы Javascript 10 15.07.2010 22:47