2014-02-04 6 views
0

Я работаю с шаблоном, и JavaScript находится в отдельном файле .js с жесткими значениями. Я хочу изменить значения на основе MySQL-запроса и переменных PHP, которые находятся в моем php-файле.Использование переменных PHP с Javascript

Я искал несколько похожих ответов, и они включают код .js в html, не создавая переменные в коде .js (если это даже лучший маршрут).

HTML:

<div class="padded"><div id="piechart" style=""> </div> </div>

JS:

Morris.Donut({ 
    element: 'piechart', 
    data: [ 
     {label: 'Option 1', value: 25 }, 
     {label: 'Option 2', value: 40 }, 
     {label: 'Option 3', value: 25 }, 
     {label: 'Option 4', value: 10 } 
    ], 
    colors: ["#3228db", "#34225e", "#1abc3c", "#24495e", "#9b51b6", "#15a5a6"], 
    formatter: function (y) { return y + "%" } 
}); 

Я хочу, чтобы изменить значения в сценарии JS, чтобы соответствовать переменным из PHP/MySQL.

+0

Спасибо, @EugenRiek, для редактирования , Был готов сделать то же самое;) –

+0

Да, спасибо! – user3272973

+1

@JohannesH. Должно было сделать это дважды - OP перезаписал мою первую попытку –

ответ

0

Во-первых: имейте в виду, что PHP выполняется сервером, так как браузер получает любой javascript, который он может выполнить. SO: то, что вы просите, возможно только в том случае, если переменные, которые вам нужны, известны до того, как пользователь что-либо сделает - в противном случае вам понадобится AJAX для получения новых значений с сервера и на самом деле будет делать некоторые чтения на нем.

Если вы получили переменные, вы можете просто вывести javascript с помощью PHP. Я предположил, что это атрибут «значение» тех объектов, которые вы хотите изменить, и я предположил, что значения, полученные вами из вашей базы данных, хранятся в массиве с именем $values - просто замените его на то, что вы действительно получили.

Morris.Donut({ 
    element: 'piechart', 
    data: [ 
     {label: 'Option 1', value: <?php echo $values[0] ?> }, 
     {label: 'Option 2', value: <?php echo $values[0] ?>}, 
     {label: 'Option 3', value: <?php echo $values[0] ?>}, 
     {label: 'Option 4', value: <?php echo $values[0] ?>} 
    ], 
    colors: ["#3228db", "#34225e", "#1abc3c", "#24495e", "#9b51b6", "#15a5a6"], 
    formatter: function (y) { return y + "%" } 
}); 
+0

Это не сработает, так как файл '.js' никогда не проходит через PHP, делая значения ' Бессмысленно –

+0

Извините, но я не соглашайтесь с этим. Это обычная практика и прекрасно работает. а) ОП не сказал, что это отдельный файл. b) Вы можете настроить сервер для разбора.js c) нет требования указывать файлы javascript .js - вы можете получить файл .php, выводящий код javascript, и отправить его с типом контекста «text/javascript». –

+0

О, извините. Op statet - отдельный файл. b) и c) все еще остаются действительными, хотя:) –

0

Есть несколько возможностей здесь, самый простой (но не самый элегантный) будет что-то вроде

HTML:

... 
<script type="text/javascript"> 

function getPiechartData() { 

    //The folllowing is created via the template from MySQL 

    return [ 
     {label: 'Option 1', value: 25 }, 
     {label: 'Option 2', value: 40 }, 
     {label: 'Option 3', value: 25 }, 
     {label: 'Option 4', value: 10 } 
    ]; 
} 

</script> 
... 

JS:

Morris.Donut({ 
    element: 'piechart', 
    data: getPiechartData(), 
    colors: ["#3228db", "#34225e", "#1abc3c", "#24495e", "#9b51b6", "#15a5a6"], 
    formatter: function (y) { return y + "%" } 
}); 
0

You» ll должны испускать значения из PHP как JavaScript; то он будет доступен в ваших внешних сценариях. Например:

PHP

<script> 
    // option1 and option2 are numeric 
    var option1 = <?php echo $option1; ?>; 
    var option2 = <?php echo $option2; ?>; 
    var colors = [ 
     <?php echo '"' . implode('", "', $colors) . '"'; ?> 
    ] 
</script> 
<script src="external.js"></script> 

Затем в external.js, то (JavaScript) переменные option1, option2 и colors будут доступны.

Вы могли бы также рассмотреть вопрос о создании ваших переменных в одном объекте, так что вы не загромождать ваше глобальное пространство с переменными:

PHP

<script> 
    // option1 and option2 are numeric 
    var stuff = { 
     option1: <?php echo $option1; ?>, 
     option2: <?php echo $option2; ?>, 
     colors = [ 
      <?php echo '"' . implode('", "', $colors) . '"'; ?> 
     ] 
    } 
</script> 
<script src="external.js"></script> 
Смежные вопросы