Intereting Posts
включая php-файл с другого сервера с php Есть ли какой-либо вред при запуске session_start () несколько раз по мере создания запроса на страницу (в php)? Странный символ тире в PHP Динамическое создание ролей и разрешений RBAC Заполнение событий в полном календарном javascript из базы данных % 1 не является допустимым приложением Win32 для php_mysql.dll Как вычислить значение умножения внутри цикла while в PHP? Адаптер базы данных Zend – сложный запрос MySQL Этот код cURL не работает? Форма jQuery AJAX с использованием mail () PHP-скрипт отправляет электронную почту, но данные POST из HTML-формы не определены неопределенная константа класса 'mysql_attr_init_command' в MAMP с использованием php 5.4.4 Laravel 5 Heroku Local не работает Подсчет появления определенного значения в массиве с помощью PHP Какие буквальные символы следует избегать в регулярном выражении? Нединамические пользовательские заголовки HTTP

onchange F (x) – php to Highchart на одной странице

Я продолжаю предыдущий вопрос, который был задан onclick -> mysql query -> javascript; та же страница

Это моя функция обмена для выпадающих имен. он вызывается, когда каждый снимок изменяется. Идея состоит в том, чтобы отправить каждое имя бегунов на php-страницу, чтобы запустить mysql-запрос, а затем вернуть 3 массива для ввода в javascript.

function sendCharts() { var awayTeam = document.getElementById('awayRunner').value; var homeTeam = document.getElementById('homeRunner').value; if(window.XMLHttpRequest) { xmlhttp14 = new XMLHttpRequest(); } else { xmlhttp14 = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp14.onreadystatechange = function() { if(xmlhttp14.readyState == 4 && xmlhttp14.status == 200) { var parts = xmlhttp14.responseText.split(','); //THIS IS WHAT IS RETURNED FROM THE MYSQL QUERY. WHEN I ALERT IT, IT OUTPUTS IN THE FORM 14,15,18,16,17,12,13 ... code that generates the chart series: [ { name: document.getElementById('awayRunner').value, data: [parts,','], //THIS IS WHERE AN ARRAY MUST BE ENTERED. THIS OUPUTS ONLY ONE NUMBER type: 'column', pointStart: 0 //pointInterval }, { name: document.getElementById('homeRunner').value, data: parts, // TRIED THIS type: 'column', pointStart: 0 //pointInterval }, { name: 'League Avg', data: [], //THIS IS WHERE 3rd ARRAY MUST BE ENTERED type:'spline', pointStart: 0 //pointInterval }, ] }); } } xmlhttp14.open("GET", "getCharts.php?awayRunner="+awayRunner+"&homeRunner="+homeRunner, true); xmlhttp14.send(); 

}

мой PHP-код выглядит так. Как вы увидите, есть 3 массива, которые должны быть возвращены для ввода в разные места в javascript для генерации кода.

 $away=$_GET['awayRunner']; $home=$_GET['homeRunner']; $db=mydb; $homeRunner=array(); $awayRunner = array(); $totalOverall= array(); $getHome="select column from $db where tmName = '$home'"; $result2 = mysql_query($getHome); while($row = mysql_fetch_array($result2)){ $homeRunner[]= $row['column']; } $getAway="select column from $db where tmName ='$away'"; $result22 = mysql_query($getAway); while($row2 = mysql_fetch_array($result22)){ $awayRunner[]= $row2['column']; } $week = 0; while($week<20){ $week++; $teamCount = "select count(column) from $db where week = $week"; $resultTeam = mysql_query($teamCount); $rowTeam = mysql_fetch_array($resultTeam); $t = $rowTeam['count(column)']; $getLeague = "select sum(column) from $db where week = $week"; $resultLeague = mysql_query($getLeague); while($row3 = mysql_fetch_array($resultLeague)){ $totalOverall[]=$row3['sum(column)']/$t; } } echo join(',',$awayRunner); в $away=$_GET['awayRunner']; $home=$_GET['homeRunner']; $db=mydb; $homeRunner=array(); $awayRunner = array(); $totalOverall= array(); $getHome="select column from $db where tmName = '$home'"; $result2 = mysql_query($getHome); while($row = mysql_fetch_array($result2)){ $homeRunner[]= $row['column']; } $getAway="select column from $db where tmName ='$away'"; $result22 = mysql_query($getAway); while($row2 = mysql_fetch_array($result22)){ $awayRunner[]= $row2['column']; } $week = 0; while($week<20){ $week++; $teamCount = "select count(column) from $db where week = $week"; $resultTeam = mysql_query($teamCount); $rowTeam = mysql_fetch_array($resultTeam); $t = $rowTeam['count(column)']; $getLeague = "select sum(column) from $db where week = $week"; $resultLeague = mysql_query($getLeague); while($row3 = mysql_fetch_array($resultLeague)){ $totalOverall[]=$row3['sum(column)']/$t; } } echo join(',',$awayRunner); 

в настоящее время, делая это таким образом, диаграмма выводит только второе значение в массиве. например, если части var равны 23,25,26,24,23 … показано только 25.

Предыдущий вопрос привел к следующему ответу –

  1. Загрузите страницу.
  2. Пользователь выбирает вариант.
  3. Слушатель onChange запускает запрос AJAX
  4. Сервер получает и обрабатывает запрос
  5. Сервер отправляет обратно массив JSON для зависимого выбора
  6. Отправитель AJAX на стороне клиента получает ответ назад
  7. Клиент обновляет выбор, чтобы иметь значения из массива JSON.

Я потерян на # 5 – 7. Может ли кто-нибудь привести примеры кода, который делает это? Обычно я бы просто попросил направление, но я застрял в этой проблеме в течение нескольких дней. Я готов отказаться от идеи иметь диаграммы на моем сайте. заранее спасибо

 EDIT 

это первое изменение, которое я сделал для отправки и получения только одного запроса

 <script> $(function(){ $("#awayRunner").change(function(){ $.ajax({ type: "POST", data: "data=" + $("#awayRunner").val(), dataType: "json", url: "/my.php", success: function(response){ alert(response); } }); }); }); 

Данные, отображаемые в окне оповещения, находятся в форме 12,15,16,15. Теперь, когда я вхожу в данные: ответ, на диаграмме отображается только второе число из каждого. Есть идеи?

 EDIT 

Хорошо, поэтому я понял, что информация в ответе – это строка. Он должен быть преобразован в INT с использованием parseInt для использования в диаграмме. в настоящее время у меня есть

 $("#awayTeam").change(function(){ $.ajax({ type: "POST", data: "away=" + $("#awayTeam").val(), dataType: "json", url: "/getCharts.php", success: function(response){ var asdf = []; asdf[0] = parseInt(response[0]); asdf[1] = parseInt(response[1]); asdf[2] = parseInt(response[2]); asdf[3] = parseInt(response[3]); alert(asdf); 

нужно будет написать функцию, чтобы сделать это чище.

Я не могу в это поверить, но, наконец, понял. вот как я использовал метод onchange, чтобы стимулировать запрос MYSQL и отображать результат Highchart. Основная проблема заключалась в том, что возвращаемый массив JSON представлял собой строку, которая должна была быть преобразована в INT. Переменная resultArray затем используется в части данных: highChart.

 $(function(){ $("#awayTeam").change(function(){ $.ajax({ type: "POST", data: "away=" + $("#awayRunner").val(), dataType: "json", url: "/getCharts.php", success: function(response){ var arrayLength = response.length; var resultArray = []; var i = 0; while(i<arrayLength){ resultArray[i] = parseInt(response[i]); i++; } в $(function(){ $("#awayTeam").change(function(){ $.ajax({ type: "POST", data: "away=" + $("#awayRunner").val(), dataType: "json", url: "/getCharts.php", success: function(response){ var arrayLength = response.length; var resultArray = []; var i = 0; while(i<arrayLength){ resultArray[i] = parseInt(response[i]); i++; } 

В PHP-коде массив должен быть возвращен как JSON, как это

 echo json_encode($awayRunner);