onclick -> mysql query -> javascript;で尋ねられた以前の質問を続けています。同じページ
これは、名前をドロップダウンするための onchange 関数です。各ドロップダウンが変更されると呼び出されます。アイデアは、各ランナーの名前を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コードは次のようになります。ご覧のとおり、コードを生成するために JavaScript のさまざまな場所に入力するために返す必要がある 3 つの配列があります。
$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);
現在、このようにすることで、チャートは配列の 2 番目の値のみを出力します。たとえば、var parts が 23、25、26、24、23 の場合、25 のみが表示されます。
以前の質問の結果、次の回答が得られました -
- ページをロードします。
- ユーザーがオプションを選択します。
- onChange リスナーは AJAX リクエストを開始します
- サーバーはリクエストを受信して処理します
- サーバーは、依存選択のオプションの JSON 配列を返します
- クライアント側の AJAX 送信者は応答を返します
- クライアントは、選択を更新して、JSON 配列からの値を取得します。
# の 5 ~ 7 で迷っています。誰かがこれを実行するコードの例を提供できますか? 通常、私は指示を求めるだけですが、この問題に何日も悩まされています。自分のサイトにグラフを表示するという考えを捨てる準備ができています。前もって感謝します
EDIT
これは、1 つの要求だけを送受信するために行った最初の変更です。
<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 の形式です。ここで、data: 応答を入力すると、それぞれの 2 番目の数値のみがグラフに表示されます。何か案は?
EDIT
OK、応答の情報が文字列であることがわかりました。チャートで使用できるようにするには、parseInt を使用して INT に変換する必要があります。現在、私は持っています
$("#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);
これをよりきれいにする関数を書く必要があります。