Кодирование и декодирование с проверкой php и javascript и атрибутов данных - PullRequest
0 голосов
/ 30 марта 2012


Я использую атрибуты данных для отправки данных из html в javascript
Атрибуты данных взяты из данных mysql, поэтому в них может быть пробел, поэтому
я получаю ошибки проверки, так как в нем нет местаразрешены внутри атрибутов

Так что решение, которое я подумал, заключается в том, чтобы закодировать значение в php, чтобы оно не имело пробелов
, а затем декодировать его в javascript после его передачи в javascript.Есть ли готовая функция для этого?Отказоустойчивый способ будет потрясающим:)

Также есть ли способ сохранить значения в атрибутах данных с наличием в них пространства и получить его для проверки?

Ответы [ 3 ]

2 голосов
/ 31 марта 2012

пробелы в атрибутах html не должны быть проблемой (просто подумайте об атрибуте style: в style="background-color: #F63;" есть пробел, но он все равно будет работать. Однако если данные отправляются с использованием ajax, скорее всего, они получат закодированный URL (@Brad: urlencode это то, что вы имели в виду, я подозреваю).

поскольку вы говорите, что данные поступают из таблицы SQL, скорее всего, сами данные передаются и хранятся либо в объекте, либо в массиве в php. Если так, то почему бы просто не json_encode данные, а в javascript: JSON.parse(document.getElementById('theId').value);. Это дает вам объект в JS, содержащий все ваши данные. Если требуется только 1 строка, вы можете использовать json_encode, поместив ваши данные в массив-обертку и закодировав это ...

Обязательно используйте SINGLE кавычки, если вы приведете это к html:

<?php
    $dbArray = array('this', 'array', 'contains','your','data', 'with spaces');
    $html= '<input type="hidden" id="hiddenArray" value=\''.json_encode($dbArray).'\'/>';

Если вы используете одинарные кавычки, элемент будет деформирован, так как массивы в кодировке json содержат двойные кавычки:

<input type="hidden" id="hiddenArray" value='["this","array","contains","your","data","with spaces"]' />

Возможно, это не выглядит сексуально, но, как вы можете видеть, двойные кавычки установили бы значение элементов на [ ... Это не лишает пробелов, но и не доставит вам проблем.

0 голосов
/ 31 марта 2012

Если вы html кодируете их в PHP, используя что-то вроде htmlentities , вы можете затем декодировать их в javascript, используя unescape

<?php
$value = htmlentities('hey you'); //hey%20you

, а затем в javascript

var value = unescape('hey%20you'); //hey you
0 голосов
/ 31 марта 2012

Также есть ли способ сохранить значения в атрибутах данных с наличием пробела и получением его для проверки?

Просто убедитесь, что вы указали значения вашего атрибута.

Это действительный документ, который передается в валидатор W3C.

<!DOCTYPE HTML>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Data Attributes</title>
  </head>
  <body>
    <h1 data-space="This value has a space in it">Data Attributes</h1>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...