Я продолжаю предыдущий вопрос, который был задан 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.
Предыдущий вопрос привел к следующему ответу –
Я потерян на # 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);