Невозможно заполнить поле с данными, содержащими '(одинарная кавычка, апостроф) в JavaScript с Laravel и PHP - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь заполнить поле формы некоторыми данными из базы данных, содержащей одну кавычку. Данные были сохранены в базе данных MySQL с PHP (и Laravel) с использованием htmlentities () с опцией ENT_QUOTES, и я подтвердил, что одинарные кавычки преобразуются в ' при сохранении в базе данных.

Я могу отобразить это без проблем на моей странице PHP, повторяя его, но когда я пытаюсь использовать javascript или jquery для заполнения поля, это не работает. Я попытался .replace заменить ' на \', чтобы избежать цитаты, но мне все еще не повезло. Поле называется «примечание», и здесь приведен соответствующий код, где $ data представляет данные, полученные из базы данных:

<?php $data = "&#039;Twas The Night Before Christmas"; ?>
<form method="post" name="my_form">
  <input type="text" name="note" id="note" value="" /> 
  <input type="button" value="Edit" onclick="editNote('<?php echo $data; ?>')" />
  <!-- other elements here ... --> 
</form>

и вот мой javascript:

//I have tried:
function editNote(data){
    $('#note').val(data);
}

//I also tried:
function editNote(note){
    var form = document.getElementById('my_form');
    form.note.value = data.replace(/&#039;/g, "\\'");
}

Я также пытался использовать PHP addlashes () в своем вызове javascript, но это тоже не сработало. Я не уверен почему, но любые данные с &#039; не экранированы должным образом, и поэтому мое поле не заполняется. Данные без одинарных кавычек в порядке. Данные с двойными кавычками с использованием &quot; тоже подойдут. Так что теперь я в замешательстве, и я решил обратиться к сообществу за советом. Любые идеи относительно того, что может быть причиной? Я пропустил что-то тривиальное? Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Спасибо, но я обнаружил, что сработало следующее решение. Я просто использовал PHP str_replace для замены &#039; на экранированную одинарную кавычку \' следующим образом:

editNote('<?php echo str_replace("&#039;", "\'",$data); ?>')
0 голосов
/ 02 сентября 2018

попробуйте

<?php $data = "&#039;Twas The Night Before Christmas"; ?>
<form method="post" name="my_form">
  <input type="text" name="note" id="note" value="" /> 
  <input type="button" value="Edit" onclick='editNote("<?php echo $data; ?>")' />
  <!-- other elements here ... --> 
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
function editNote(data){
    $('#note').val(data);
}

</script>
...