Выключение одиночной кавычки в параметрах функции JavaScript

Мне нужно избежать одиночных кавычек в параметрах функции JavaScript, чтобы избежать этого:

onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5  ',this);"

Но мне нужно избегать их внутри вызова функции, так как я не знаю значений, которые будут переданы (переменные db, которые я не могу удалить из базы данных).

Есть ли функция, которая позволяет мне делать что-то вроде следующего?

onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"

Ответ 1

 JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)

создаст строку, которую вы можете безопасно внедрить в кавычный атрибут и которая будет иметь то же значение, если ее увидит интерпретатор JavaScript.

Единственное предостережение в том, что некоторые Unicode новые строки (U + 2028 и U + 2029) должны быть экранированы, прежде чем встраиваться в строковые литералы JavaScript, но JSON требует только экранирования \r и \n.

Ответ 2

Побег апострофа с обратной косой чертой:

onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"

Ответ 3

Возможно, это не совсем понятно из вопроса, но если предположить, что все, что вы хотите, это отправить это на PHP script для хранения в базе данных, вы, конечно, в идеале должны использовать PHP различные методы, такие как stripslashes() - но если вы действительно не пытаетесь получить слишком фантазии, просто добавить 1 косой черты перед любой отдельной цитатой достаточно, чтобы отправить SQL-запрос прямо в PHP с клиентской стороны. Это небезопасно, но, возможно, и не нужно.

str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x

делает трюк., как, например, примерно так:

var body = $('#body').val().replace(/'/g, "\\'");
myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );

Теперь MySQL сохранит ваш body, как вы видите его в поле формы.

Ответ 4

Эта функция работала для меня (она снова и снова возвращает цитату): Предполагая, что передаваемые данные являются значением входного элемента,

var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));

Затем снова получите исходный текст:

var originalText = decodeURIComponent(Url);

Ответ 5

var cmpdetail = cmpdetail.replace(/'/g, "\\'");

его работа для меня.

Ответ 6

Если я правильно понимаю вас, я не верю, что то, что вы пытаетесь сделать, возможно. Вам нужно будет избежать котировок на стороне сервера. Любая функция, которая могла бы избежать кавычек для вас, сама была бы функцией, требующей правильной строки, то есть ее нужно было бы экранировать до передачи функции.

Ответ 7

Я предпочитаю использовать одиночную кавычку для определения строк JavaScript. Затем я избегаю встроенных двойных кавычек следующим образом.

Вот как я это делаю, в основном str.replace(/[\""]/g, '\\"').

var display = document.getElementById('output');
var str = 'class="whatever-foo__input" id="node-key"';
display.innerHTML = str.replace(/[\""]/g, '\\"');

//will return class=\"whatever-foo__input\" id=\"node-key\"
<span id="output"></span>