2013-06-09 4 views
0

У меня есть файл PHP, который я использую для отображения HTML и захвата данных из базы данных, я хочу захватить данные при загрузке страницы, сохранить их в массивах javascript, затем получить к ней доступ через onchange событие. База данных была протестирована и работает, однако у меня возникают проблемы с получением данных с PHP на JS, я прочитал все другие темы, и ни одно из этих предложений, похоже, не помогает.Проблемы с встраиванием php и javascript

Здесь ошибка при проверке в хроме:

Uncaught SyntaxError: Unexpected token <

эта ошибка на следующей строке

var myAge = <?php echo json_encode($phpAge); ?>; 

Я надеюсь, что объясняет все, что я могу опубликовать весь код, если его необходимо.

+5

Нам нужно увидеть ваш код, чтобы исправить его. Отправьте свой код. –

+0

показать код пожалуйста – ianace

ответ

1

Если вы хотите получить данные с PHP на JavaScript, вам необходимо сбежать от него должным образом. Лучший способ сделать это - json_encode().

<?php 
$data = array('someKey' => 'someValue'); 
echo 'var data = ', json_encode($data), ';'; 

Результат этого скрипта будет действительным JavaScript.

var data = {"someKey": "someValue"}; 

Также обратите внимание, что если вы хотите обрабатывать файлы JavaScript как PHP, вам необходимо настроить сервер для этого.

0

Если вы используете mysqli, возможно, что-то подобное вам поможет?

<script type="text/javascript"> 
    <?php 
     $mysqli = new mysqli('hostname', 'username', 'password', 'database'); 
     $res = $mysqli->query('SELECT * FROM table_name'); 
     $data = array(); 
     while($fld = $res->fetch_assoc()) { $data[] = $fld; } 
     echo('var data = ' . json_encode($data) . ';'); 
    ?> 
</script> 

Если затем перейти на консоль (F12 в Chrome) и введите data и нажмите вернуться, он должен показать локализованную версию данных.

1

Вы не можете просто выгрузить сериализованную строку JSON в середине вашего кода JavaScript и предположить, что она будет работать. Он должен быть объявлен как соответствующую строку, в кавычки вокруг него, избегали символов и т.д.

Правильный способ сделать это было бы что-то больше, как это:

<?php 
    echo "var data = \"" . addslashes(json_encode($phpAge)) . "\";\r\n"; 
?> 

Или этот путь, если вы предпочитаете :

var myAge = "<?php echo addslashes(json_encode($phpAge)); ?>"; 
+0

Ваш код неверен. Не используйте 'addslashes()' вокруг того, что уже было закодировано как JSON. Кодировка JSON позаботится о правильном форматировании данных. Все, что вы делаете, это вставить строку, содержащую данные JSON, в переменную JavaScript. – Brad

+0

@Brad И именно поэтому 'addslashes()' важен там. Я не передаю JSON на JavaScript, я передаю строку с JSON внутри. Если я просто возьму ваш пример и поставлю «вокруг», это будет «var data =» {«someKey»: «someValue»} «', и, как вы можете видеть, это недействительно. Это должно быть 'var data =" {\ "someKey \": \ "someValue \"} "' – Havenard

+0

Да, это моя точка! Отбросьте кавычки вокруг него и избавьтесь от 'addslashes()'. Объект будет прекрасным, если его не отправить в виде строки. – Brad

Смежные вопросы