2

こんにちは私は、innerhtmlを使用して、つまり解析せずに、インタクトなデータをオブジェクトxmlhttprequestのresponsetextに返す方法がわかりません。リスト1では、それは機能します。しかし、以下に示すようにリスト2を使用して、phpからテキストを送信すると、機能しません。そしてListing3はphpスクリプトを示しています。出力は、dygraph関数で処理されるのではなく、returnがテキストであることがわかります。よろしくお願いします。

Listing1:-
    xmlhttp.onreadystatechange=function()
     {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
             z = new Dygraph(document.getElementById("showrealchart"),
                  "Batch,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,\n" +
"1, 3.65, 5.00, 4.53, 5.01, 10.50, 0.03, 9.05, 5.05, 5.22, 6.23\n"+
"7, 3.65, 5.03, 4.50, 5.02, 9.50, 0.05, 9.15, 5.55, 5.20, 6.23\n"+
"8, 3.67, 5.00, 4.53, 4.99, 9.00, 0.04, 9.30, 5.10, 2.30, 6.22\n"+
"12, 3.65, 5.04, 4.53, 4.99, 10.05, 0.35, 9.00, 5.23, 5.20, 6.21\n"+
"16, 3.66, 5.00, 4.50, 4.98, 10.50, 1.01, 9.01, 5.20, 5.10, 6.24\n"+
"18, 3.65, 5.02, 4.70, 5.00, 9.80, 0.45, 9.14, 5.63, 5.15, 6.23\n");
      }
     }

ここで、正確な形式でデータを返したいと思います。

Listing 2:-
xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                z = new Dygraph
                document.getElementById("showrealchart").innerHTML=xmlhttp.responseText;

そしてPhpスクリプト。

Listing 3;-
<?php
print '"Batch,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,\n" +
"1, 3.65, 5.00, 4.53, 5.01, 10.50, 0.03, 9.05, 5.05, 5.22, 6.23\n"+
"7, 3.65, 5.03, 4.50, 5.02, 9.50, 0.05, 9.15, 5.55, 5.20, 6.23\n"+
"8, 3.67, 5.00, 4.53, 4.99, 9.00, 0.04, 9.30, 5.10, 2.30, 6.22\n"+
"12, 3.65, 5.04, 4.53, 4.99, 10.05, 0.35, 9.00, 5.23, 5.20, 6.21\n"+
"16, 3.66, 5.00, 4.50, 4.98, 10.50, 1.01, 9.01, 5.20, 5.10, 6.24\n"+
"18, 3.65, 5.02, 4.70, 5.00, 9.80, 0.45, 9.14, 5.63, 5.15, 6.23\n";';
?>
4

2 に答える 2

0

リスト1とリスト2のコードを異なる方法で実行する理由はよくわかりません。しかし、私はこれがあなたが望むものだと信じています。

リスト2。

var z = new Dygraph(document.getElementById("showrealchart"), xmlhttp.responseText);

リスト3。

<?php
# ... is the rest of your data
echo <<<TXT
Batch,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10
1, 3.65, 5.00, 4.53, 5.01, 10.50, 0.03, 9.05, 5.05, 5.22, 6.23
7, 3.65, 5.03, 4.50, 5.02, 9.50, 0.05, 9.15, 5.55, 5.20, 6.23
...
...
TXT;
?>
于 2012-10-12T10:14:23.437 に答える
0

文字列リテラルを返しています。実際には次のようになるため、これは機能しません。

document.getElementById("showrealchart").innerHTML="\"Batch, ....\"";

引用符が二重になっていることに注意してください。

PHP から引用符を削除すると、次のようになります。

print 'Batch,S1,S2...\n1 3.65...\n';

JavaScript コールバックは、使用する文字列としてこれを取得します。

または、PHP で長いバージョンが必要な場合は、次のいずれかを実行できます。

$res = print 'Batch,S1,S2...\n' .
       '1, 3.65, ...\n' .
       ....;
print $res;

しかし、クライアントの Js がデータに対して行うことによっては、\n ビットを操作したり、すべてを JSON として送信したり、その他のことをしたりすることもできます。

于 2012-10-12T07:10:11.420 に答える