0

次のようにハードコードされた配列を使用して、スクリプトを機能させることができました。

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'
    });
}
4

1 に答える 1

0

someDataArray [i]がコンマで区切られた値の文字列である場合、次のことができます。

dataArray [i] = someDataArray [i] .split('、')

于 2013-01-25T21:29:32.810 に答える