Экранирование кавычек
Добрый день.
Хотела уточнить как правильно заэкранировать кавычки в данном случае, я вызываю функцию 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>"); |
Цитата:
alert('1. "test"'); alert("2. 'test'"); alert("3. \"test\""); alert('4. \'test\''); |
Нет, это не совсем то, просто заэкранировать я могу, но при передаче параметров происходит путаница и скрипт не может понять где начало а где конец параметра из-за кавычки предположим названия ресторана
|
Цитата:
|
Я получаю xml считываю из него все данные, в частности есть поля с кавычками(название ресторана, компании итд), присваиваю эти значения переменной и передаю их дальше в функцию, передаю их списком в кавычках, это форма записи при отправке, а из-за того,что кавычки присутствуют в названии именно campaignTitle происходит путаница, т.е. скрипт теряет границы передаваемого параметра. Сократила пример
campaignTitle = '"Турандот"'; <button type='button' class='btn btn-xs' title='Редактировать акцию' onclick='clickEditCampaing("+ campaignId + ", "" + campaignTitle + "")'></button> |
Цитата:
|
Давай таки отталкиваться от этого...
Цитата:
Т.е. что в итоге нужно получить? Какую строку? |
Это функция редактирования. При клике функции передаются соответствующие параметры.
Рассмотрим на примере 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-ах. Но вот засада, параметры разделены кавычкой и запятой именно в таком формате они передаются в функцию, но если в тексте который вернулся есть кавычка начинается путаница с границами параметров. Где заканчивается и начинается |
tvixa, давай поучимся делать тестовые примеры...
Цитата:
var campaign='<title>test"</title>'; Так? Цитата:
var campaign='<title>test"</title>'; var campaignTitle = ($(campaign).find("title").text()); Так? Цитата:
|
Вот это тестовый пример
<!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> Его можно взять за основу и сделать свой тестовый пример... ;) |
Часовой пояс GMT +3, время: 22:48. |