Вы можете заменить цитируемые подстроки и символы без кавычек на re.sub
, предполагая, что ваши строки хорошо сформированы и кавычки сбалансированы:
re.sub("('[^']*'|.)(?!$)", r'\1,', "AB'CD'E")
# A,B,'CD',E
Если вам нужно что-то более сложное, возможно, попробуйте анализировать символ за символом как вы предложили. Следите за текущим состоянием - независимо от того, находится ли текущий символ в последовательности в кавычках или нет - с помощью переменной.
Используйте это:
OnSuccess = "function(){yourfunction(" + productcode + ");}"
или
OnSuccess = "function(){yourfunction(this, " + productcode + ");}"
Я тоже столкнулся с этой проблемой ... и не нашел способа ее решить! Я сделал обходной путь (который не является хорошим, но решил это пока ... возможно, пока кто-то не отправляет решение здесь) ... я поместил скрытое поле в div TargetId и OnSuccess, который я назвал методом js, который извлекает значение из скрытого поля <- это может произойти в вашем методе AnimateVoteMessage ...
Try this - it works for me:
OnSuccess = "new Function('MyFunction(" + myParameter + ")')"
или ... a немного другой синтаксис, который работал у меня:
OnSuccess = "( function() { MyFunction(arg1,arg2); } )"
См. http://www.codeproject.com/KB/ajax/Parameters-OnSuccess.aspx
В основном:
function yourCallBack(arg1,arg2) {
return function(result) { // Your old function
alert(arg1); // param will be accessible here
alert(arg2); // param will be accessible here
alert(result);// result = the response returned from Ajax
}
}