18.11.2015, 12:56
|
|
Аспирант
|
|
Регистрация: 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 + ", "" + campaignTitle + "", "" + campaingDescr + "","" + campaingFullDescr + "","" + conditionsDescr + "","" + mrctId + "","" + campStart + "","" + campStop + "","" + bannerTitle + "", "" + link + "")'><span class='glyphicon glyphicon-pencil'></span></button></td>" +
"</tr>");
Последний раз редактировалось tvixa, 18.11.2015 в 13:01.
|
|
18.11.2015, 13:19
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от tvixa
|
как правильно заэкранировать кавычки
|
Вот несколько вариантов...
alert('1. "test"');
alert("2. 'test'");
alert("3. \"test\"");
alert('4. \'test\'');
|
|
18.11.2015, 13:26
|
|
Аспирант
|
|
Регистрация: 09.09.2013
Сообщений: 33
|
|
Нет, это не совсем то, просто заэкранировать я могу, но при передаче параметров происходит путаница и скрипт не может понять где начало а где конец параметра из-за кавычки предположим названия ресторана
|
|
18.11.2015, 13:44
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от tvixa
|
это не совсем то
|
Тогда сделай простой тестовый пример, а не ту портянку... Дабы понять про что ты спрашиваешь.
|
|
18.11.2015, 13:55
|
|
Аспирант
|
|
Регистрация: 09.09.2013
Сообщений: 33
|
|
Я получаю xml считываю из него все данные, в частности есть поля с кавычками(название ресторана, компании итд), присваиваю эти значения переменной и передаю их дальше в функцию, передаю их списком в кавычках, это форма записи при отправке, а из-за того,что кавычки присутствуют в названии именно campaignTitle происходит путаница, т.е. скрипт теряет границы передаваемого параметра. Сократила пример
campaignTitle = '"Турандот"';
<button type='button' class='btn btn-xs' title='Редактировать акцию' onclick='clickEditCampaing("+ campaignId + ", "" + campaignTitle + "")'></button>
Последний раз редактировалось tvixa, 18.11.2015 в 14:11.
|
|
18.11.2015, 14:14
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от tvixa
|
Сократила пример
campaignTitle = '"Турандот"';
<button type='button' class='btn btn-xs' title='Редактировать акцию' onclick='clickEditCampaing("+ campaignId + ", "" + campaignTitle + "")'></button>
|
Если верить подсветке, он у тебя уже неправильный...
Последний раз редактировалось ksa, 18.11.2015 в 14:18.
|
|
18.11.2015, 14:17
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Давай таки отталкиваться от этого...
Сообщение от tvixa
|
$("#tbody-active-campaings").append();
|
Какую строку ты имеешь? Какие переменные чему равны? И куда их значения собираешься вставлять?
Т.е. что в итоге нужно получить? Какую строку?
|
|
18.11.2015, 14:45
|
|
Аспирант
|
|
Регистрация: 09.09.2013
Сообщений: 33
|
|
Это функция редактирования. При клике функции передаются соответствующие параметры.
Рассмотрим на примере 1-2 параметров. Я получаю xml и мне возвращается такое значение с кавычкой: <title>test"</title>
Далее я пишу
var campaignTitle = ($(campaign).find("title").text());
То есть присваиваю переменной полученное значение, затем мне нужно это значение передать в функцию для дальнейшей обработки, что я и пытаюсь сделать вот тут
onclick='clickEditCampaing("+ campaignId + ", "" + campaignTitle + "", "" + campaingDescr + "","" + campaingFullDescr + "","" + conditionsDescr + "","" + mrctId + "","" + campStart + "","" + campStop + "","" + bannerTitle + "", "" + link + "")'
Если кавычки во всех этих переменных отсутствуют скрипт отрабатывает корректно, функция принимает параметры и выводит в определенных input-ах.
Но вот засада, параметры разделены кавычкой и запятой именно в таком формате они передаются в функцию, но если в тексте который вернулся есть кавычка начинается путаница с границами параметров. Где заканчивается и начинается
|
|
18.11.2015, 15:27
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
tvixa, давай поучимся делать тестовые примеры...
Сообщение от tvixa
|
Я получаю xml и мне возвращается такое значение с кавычкой: <title>test"</title>
|
Т.е.
var campaign='<title>test"</title>';
Так?
Сообщение от tvixa
|
Далее я пишу
var campaignTitle = ($(campaign).find("title").text());
|
Т.е.
var campaign='<title>test"</title>';
var campaignTitle = ($(campaign).find("title").text());
Так?
Сообщение от tvixa
|
затем мне нужно это значение передать в функцию для дальнейшей обработки, что я и пытаюсь сделать вот тут
onclick='clickEditCampaing("+ campaignId + ", "" + campaignTitle + "", "" + campaingDescr + "","" + campaingFullDescr + "","" + conditionsDescr + "","" + mrctId + "","" + campStart + "","" + campStop + "","" + bannerTitle + "", "" + link + "")'
|
Вот эту портянку сделай меньше, но достаточной для примера. И продолжи текст программы, что был выше.
|
|
18.11.2015, 15:39
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Вот это тестовый пример
<!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='"Test"';
$('body').append('<button onclick="alert('+"'"+str+"'"+')">Test</button>');
});
</script>
</head>
<body>
</body>
</html>
Его можно взять за основу и сделать свой тестовый пример...
|
|
|
|