#javascript #php #ajax
#javascript #php #ajax
Вопрос:
Это касается использования диаграмм Google.
В настоящее время я нахожусь в процессе настройки нескольких линейных диаграмм с использованием Google Charts. Данные, используемые для создания этих диаграмм, загружаются из базы данных MySQL через интерфейс Ajax-вызова PHP-скрипта для сбора данных.
В настоящее время я настроил и работаю, чтобы получать данные и корректно отображать их, пока я вручную размещаю необходимые данные в PHP-скрипте, например:
$keyword = "Test";
$query = $this->db->prepare("SELECT * FROM mytable WHERE keywords = ?");
$query->bindValue(1, $keyword);
Итак, как видно из приведенного выше примера, я говорю скрипту использовать ключевое слово «Test».
Однако я хочу сделать это динамическим вызовом из-за того, что мне нужно сгенерировать и отобразить несколько разных диаграмм, каждая из которых содержит отдельную информацию.
Для достижения этой цели я в настоящее время устанавливаю параметр в URL-адресе на основе текущей загруженной страницы, например: www.mywebsite.com/chart.php?id=mykeyword
Нет, я, очевидно, могу захватить этот «идентификатор», используя (он находится над функцией Google Charts Ajax:
$id = $_GET["id"];
Моя проблема здесь в том, что я понятия не имею, как отправлять пользовательские данные, идентификатор, через вызов ajax. Я пробовал несколько способов, но, похоже, я не могу заставить его отправлять через функцию PHP.
Это Google Charts ajax:
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "controller.php",
dataType:"json",
async: false
}).responseText;
jsonData = JSON.stringify(eval("(" jsonData ")"));
var containerId = "chart_div";
try {
var data = new google.visualization.DataTable(jsonData);
var chart = new google.visualization.LineChart(document
.getElementById('chart_div'));
chart.draw(data, {width: 900, height: 220, vAxis: {maxValue: 10}});
} catch (err) {
alert( err.message );
}
}
</script>
Вызов Ajax отправляет данные на контроллер, который выглядит следующим образом:
public function dataController() {
$update = new Chart($db);
$update->keywordChart();
Теперь я знаю, что, очевидно, мне нужно добавить $id в качестве обратного вызова, чтобы его можно было отправить в функцию PHP, например:
dataController($id)
Моя проблема в том, что я не могу получить $id для фактической отправки через вызов ajax.
Итак, каков был бы наилучший способ включить идентификатор URL-адреса в этот вызов Google Charts Ajax, чтобы он также отправлялся на controller.php файл?
Я предполагаю, что мне нужно как-то добавить его сюда где-нибудь:
function drawChart() {
var jsonData = $.ajax({
url: "controller.php",
dataType:"json",
async: false
}).responseText;
Ответ №1:
Вы можете выбрать один из этих двух :
url: "controller.php?id=" id ,
или :
url: "controller.php",
type: "GET",
data: { id: id},
Комментарии:
1. Это имеет смысл, я попробовал, но как мне тогда получить доступ к этому внутри PHP? Я предполагаю, что это поместит идентификатор внутри переменной как $id?
2. ДА. Просто присвоите значение переменной id в JavaScript и передайте его следующим образом, и вы отсортированы. Может быть передана переменная при вызове функции: функция drawChart(id)