2012-06-28 3 views
0

Я хочу выполнять функции javascript на странице после того, как я извлечу некоторые значения из локальной базы данных. Однако, как только PHP-код находится в моем javascript, функция javascript даже не запустится. Если я отделяю PHP-код и запускаю только PHP-код, он отлично работает, как и код javascript. Вот мой код:Использовать значения массивов из PHP в Javascript

<? 
mysql_connect("127.0.0.1:3307", "username", "password") or die ("Error fetching value from database."); 
mysql_select_db("ccmalumni"); 
$result = mysql_query("SELECT DISTINCT value FROM ccm_bp_xprofile_data WHERE field_id = 16") or die ("What da heck"); 
$states = db_result_array_values($result); 
echo $states[0]; 
mysql_close(); 

function db_result_array_values($result) { 
for ($array = array(); $row = mysql_fetch_row($result); isset($row[1]) ? $array[$row[1]] = $row[0] : $array[] = $row[0]); 
return $array; } 
?> 

var present = <? echo json_encode($states); ?>; 

Пожалуйста, что я делаю неправильно? Вы можете увидеть полный код here.

Спасибо.

+0

объявлять ВАР между '' теги –

+0

вы с использованием консоли JavaScript в вашем браузере отладить это? он показывает какие-либо ошибки синтаксического анализа при загрузке страницы? – mikegreiling

+0

также эхо в строке 'echo $ states [0];'? это действительно javascript? – mikegreiling

ответ

4

json_encode выйдет из строки json в форме, которую может понять javascript, поэтому в основном исправить, как показано ниже;

var darr = <? echo json_encode($states); ?>; //Already readable JSON 
var present = darr ; 
+1

Вы можете попытаться просмотреть исходный код в браузере и посмотреть, что распечатано –

+1

Или просто 'var present =

+0

На самом деле, это была более новая модификация, у моего исходного кода просто был 'var present = '(кто хочет сделать дополнительное кодирование). Я решил проблему, просмотрев источник, я обнаружил, что весь мой PHP-код не обрабатывается. Проблема заключалась в том, что я начал свой код с '

0

Если вы хотите получить данные от сервера к клиенту, я думаю, что лучший способ - сделать запрос ajax.

Потому что вы не должны смешивать сервер с клиентской стороны
(делает ваш код более читаемым, легко понять, и т.д.)

здесь вы получите краткое описание, как это сделать с JQuery: https://stackoverflow.com/a/415894/1067061

надежду это помогает, удачи!

2

$ .parseJSON() анализирует строку для javascript-объекта. var darr уже есть объект, это не строка, и, следовательно, не должны быть переданы $.parseJSON()

См $.parseJSON() API Docs

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