Я пытаюсь захватить значение, которое рассчитывается на странице PHP с именем "classes_day.php" в то же время, когда я передаю значение для GET, "? Day = YYYY-mm-dd". Как мне сделать это с JS или JQuery?

<?php
  
  // aulas_dia.php

	include '../config.php';

	$exped_duration = 14*60;

	if (isset($_GET['data'])) {
		$data = $_GET['data'];

		$query = "SELECT * FROM `task` WHERE `dia` LIKE ".$data."";
		$result = mysqli_query($link,$query);
		$soma = 0;
		while ($row = mysqli_fetch_assoc($result)) {
			$soma = $soma+$row['duration'];
		}

		$aulas_free = floor(($exped_duration-$soma)/50);
		echo $aulas_free;
	}

?>

Я уже пытался использовать iframe и contentwindow, но iframe получает значение, а contentwindow пусто (странно, не правда ли?).


Следуя совету Бармара, я использую $ .get, но я не знаю, почему этот цикл не работает, кто-нибудь может мне помочь?

for (i = 0; i < num_days; i++) {
  x = (first_day+i)%7;
  y = (first_day+i-x)/7;
  h_dia(String(y)+String(x),i+1);
  data_c = ano+"-"+mes+"-"+String(i+1);
  $.get("aulas_dia.php?data="+data_c, function(data){ 
    console.log(String(y)+String(x)+" - "+data_c+" - "+data); 
    set_aulas_fun(String(y)+String(x),data);
  });
}
-1
Sérgio Avilla 19 Дек 2019 в 02:14

1 ответ

Используйте $.get() для отправки запроса AJAX.

$.get("classes_day.php?data=YYYY-MM-DD", function(response) {
  console.log(response);
});

Кстати, вы можете сложить все длительности в запросе SQL вместо использования цикла PHP. И вы должны использовать подготовленный оператор для предотвращения внедрения SQL.

<?php
include '../config.php';
$exped_duration = 14*60;

if (isset($_GET['data'])) {
    $data = $_GET['data'];
    $query = "SELECT SUM(duration) AS total FROM `task` WHERE `dia` LIKE ?";
    $stmt = $link->prepare($query);
    $stmt->bind_param("s", $data);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    $soma = $row['total'];
    $aulas_free = floor(($exped_duration-$soma)/50);
    echo $aulas_free;
}
1
Barmar 18 Дек 2019 в 23:21