2016-12-13 3 views
0

У меня есть функция jQuery для печати диаграмм (фреймворк jqPlot). Я хочу напечатать несколько диаграмм с различными вариантами. Поэтому мне нужно вызвать эту функцию более одного раза и с разными значениями.Как передать различные переменные функции jQuery из php

У меня есть уродливое решение, как это:

//----- index.php: 

// chart 1 
$values = "[1,2,3]"; 
$id_chart = "chart1"; 
$options = "{...}"; 
include 'chart.php'; 

// chart 2 
$values = "[8,2,5]"; 
$id_chart = "chart2"; 
$options = "{...}"; 
include 'chart.php'; 


//---- chart.php 

<script> 
$(function() { 
    $.jqplot(<?php echo $id_chart;?>, <?php echo $values;?>, <?php echo $options;?>); 
}); 
</script> 

Я попробовал другое решение - Вызов JavaScript функции с переменными и взывать функции JQuery в функцию JS.

//---- index.php: 

<script> 
function printChart(opt1,opt2,opt3){ 
    $(function() { 
     $.jqplot(opt1, opt2, opt3); 
    }); 
} 
</script> 

<?php 
// chart 1 
    $values = "[1,2,3]"; 
    $id_chart = "chart1"; 
    $options = "{...}"; 

    echo "<script> 
    printChart(\"$id_chart\",\"$values\",\"$otpions\"); 
    </script>"; 

// chart 2 
    $values = "[8,2,5]"; 
    $id_chart = "chart2"; 
    $options = "{...}"; 

    echo "<script> 
    printChart(\"$id_chart\",\"$values\",\"$otpions\"); 
    </script>"; 
?> 

Но, конечно, jQuery не может «видеть» переменные от JS. Можно ли передавать переменные из JS в jQuery?

У вас есть, пожалуйста, любые другие предложения по оптимальному решению?

Спасибо, ребята.

+1

Возможный дубликат (http://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data -from-php-to-javascript) –

ответ

0

Можно ли передавать переменные из JS в jQuery?

jQuery - это библиотека для javascript.
Это означает, что переменные jQuery являются переменными javascript.
, что означает, что вы можете использовать их, как и любые другие переменные javascript.

+0

Да, я это знаю. Поэтому я попытался передать переменные функции JS и работать с ними в jQuery. JS принял эти переменные, но это не было видно из функции $ .jqplot, и я не знаю почему. –

1

Что вам нужно понять, так это то, что PHP - это серверный язык, а JavaScript - язык на стороне клиента. PHP полностью выполнит, создав HTML-страницу (содержащую JavaScript), а затем отправит ее в браузер клиента. Браузер отображает HTML и выполняет JavaScript. Итак, что вам нужно сделать, это распечатать информацию для JavaScript на странице. Этого должно быть достаточно: [? Как передать переменные и данные из PHP в JavaScript]

<?php // your PHP to generate the values into an array 
    $charts = [ 
     [ 
      'values' => [1,2,3] 
      'id_chart' => 'chart1', 
      'options' => '{...}' 
     ], 
     [ 
      'values' => [4,5,6] 
      'id_chart' => 'chart2', 
      'options' => '{...}' 
     ] 
    ]; 
?> 
<script> 
    var charts = JSON.parse(<?= json_encode($charts) ?>); 
    $.each(charts, function() { 
     $.jqplot(this.id_chart, this.values, this.options) 
    }); 
</script> 
+0

Сначала извиняюсь, если мои комментарии глупы. Я учился. К задаче: var charts = JSON.parse (); json_encode сгенерируйте это: "[{" values ​​":" [1,2,3] "," id_chart ":" chart1 "}, {" values ​​":" [4,5,6] "," id_chart " : "chart2"}] " , но JSON.parse ничего не делать - скрипт не работает. После этого я попытался что-то предупредить, но ничего. –

+0

1. В этом фрагменте кода есть незашифрованные нуль-ширины и пространства с нулевой шириной. 2. Вы не можете использовать строки двойной кавычки в строке с двойными кавычками, попробуйте изменить ее на 'JSON.parse ('[{" values ​​":" [1,2,3] "," id_chart ":" chart1 "} , {"values": "[4,5,6]", "id_chart": "char2"}] '); 'обратите внимание на одинарные кавычки и двойные кавычки. также удалены символы нулевой ширины. – iHasCodeForU

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