次のようにハードコードされた配列を使用して、スクリプトを機能させることができました。
dataArray[0] =[50,10,0.3,0.25,50,"FFF",3];
dataArray[1] =[50,10,0.3,0.2,50,"FFF",3];
....
dataArray[5] =[50,20,0.5,0.7,120,"FF0",4];
dataArrayの内容をdbテーブルに入れて、ハードコードされた配列を削除できるようにしました。
PHPを使用してMySqlから文字列でデータを返していますが、データダンプは、値の数と値自体が正しいことを示しています。
ただし、ハードコードされた配列のような配列になっていないため、データキャプチャを正しくコーディングしていないようです(ハードコードされた配列の構造を維持する必要があります)。
dbreadのコードは次のとおりです。
function getSomeData(){
$.ajax({
type: "GET",
url: "GetSomeData.php",
dataType: "text",
success:function(result){
setSomeData(result);
}
});
}
var someDataArray = new Array();
function setSomeData(resultData){
var resData = resultData.split('^');//record split
for(var i = 0; i < resData.length; i++){
someDataArray[i] = resData[i].split('#');//field split
someDataArray[i].pop();//removes array element occupied by '^'
if(i == resData.length - 1){
setDataArray();
}
}
}
someDataArray [x]は単なる文字列であるため、setDataArray()のこのforループは正しい配列構造を作成しません。
var dataArray = new Array();
function setDataArray(){
for(var i = 0; i < dataArray.length; i++){
dataArray[i] = someDataArray[i];
}
}
そこで、someDataArray[x]を次のような配列に入れてみました。
dataArray[i] = [someDataArray[i]];
しかし、それもうまくいきませんでした。
私は2日間、これをパズルで解き明かし、ブログを読み、考えられるすべてのことを実験してきましたが、運がありませんでした。簡単な解決策だと思いますが、うまくいきません。
ヘルプ?
編集:
JSONとjson_encodeについて少し学んだ後、スクリプトが機能するようになりました。パット・バークから貴重なアドバイスを受けたことを認めるために、私が行った方法を投稿したいと思いました。以下のコードは彼が考えていたものではないかもしれませんが、私はそれが機能するまでそれをマッサージしました。しかし、なぜそれが機能するのか本当に理解していないので、json_encodeについてもう少し読む必要があると思います。
ajax呼び出しでdataType: "json"を使用すると、エラーがスローされることに注意してください。
//GetSomeData.php
$return_arr = array();
$query1 = "SELECT * FROM mytable ORDER BY idx ASC";
$result = mysql_query($query1) or die('Query failed: ' . mysql_error());
while($row = mysql_fetch_array($result)){
$resultArray = array();
$resultArray[] = (int)$row['dc'];
$resultArray[] = (int)$row['smlspc'];
$resultArray[] = (float)$row['sclx'];
$resultArray[] = (float)$row['scly'];
$resultArray[] = (int)$row['lgspc'];
$resultArray[] = (int)$row['colr'];
$resultArray[] = (int)$row['diam'];
if(count($resultArray) == 7){
array_push($return_arr, $resultArray);
}
}
echo json_encode($return_arr);
mysql_free_result($result);
//新しいjs
function getSomeData(){
resultData = new Array();
$.ajax({
type: "GET",
url: "GetSomeData.php",
dataType: "text",
//dataType: "json", //using this threw an error (see below)
success:function(result){
resultData = $.parseJSON(result);
$("#p1").append("resultData.length =" + resultData.length + "<br />");
//resultData.length =114 (it's a string not an array)
$("#p1").append("resultData =" + resultData + "<br />");
//resultData =
//[[50,10,0.375,0.25,50,0,0],
//[50,10,0.3,0.2,50,0,1],
//[50,10,0.6,0.4,0,0,2],
//[50,0,0.4,0.4,0,0,3],
//[50,0,0.4,0.4,0,0,3]]
for(var i = 0; i < resultData.length; i++){
$("#p1").append("resultData[" + i + "] =" + resultData[i] + "<br />");
//data displayed with dataType: "text"
//resultData[0] =50,10,0.375,0.25,50,0,0
//resultData[1] =50,10,0.3,0.2,50,0,1
//resultData[2] =50,10,0.6,0.4,0,0,2
//resultData[3] =50,0,0.4,0.4,0,0,3
//resultData[4] =50,0,0.4,0.4,0,0,3
//data displayed with dataType: "json"
//resultData is null
}
},
//this has no effect with either dataType: "text" or dataType: "json"
contentType: 'application/json'
});
}