1

私はこのコードを持っています:

$wage = array();
foreach ($result3 as $row3) {
  $wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';
}
if ($userid == 0 ) {
  $age= "";
} else {
  $age = implode(',', $wage).",";
}
 echo json_encode("var2"=>$myvar ,"var3"=>$age));  // i didnt write var2 because is same as var3

上記は次のようなものを出力します[4,2.3][5,6],[1.7,5],

そしてjavascriptimでは、名前が.であるajaxを介して上記で出力されたこの値を受け取りますvar3

dataType: 'json' ,
success: function(response){
var age = response['var3'] ; 
.....

parseFloatだから問題は、この変数をどのように使用できるかということage です。

編集 。私がそのようにjsonに警告した場合

   alert (response);

// [object Object] 小さいoと大きいOに注意を向ける

EDIT2。使用済みコンソルログ

そして私はこれを手に入れます

  {"var2":"[2,5],[3.5,5],[6.5,6.5],[8,7],","var3":"[2,46],[3.5,61],[6.5,70],[8,71],","var4":"[2,32],[3.5,41],[6.5,42],[8,43],","var5":"[46,5],[61,5],[70,6.5],[71,7],"}

この戻り値parseFloatは、2つの引用符の間の文字列のようなものであることがわかります。

4

2 に答える 2

3

これは正しくありません:

$wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';

あなたは文字列を構築しています。これは偶然にもjavascript配列定義のように見えますが、それでも単なる文字列です。これがjson_encodedになると、次のようになります

"[...,...]"
^--       ^-- string

PHPを使用している間は、すべての段階でネイティブデータ構造を構築する必要があります。

$wage[] = array(floatval($row3['age']), floatval($row3['point']));

ネイティブAND「jsonのような」文字列のこのミッシュマッシュではありません。json_encode()は、同等のJavascriptタイプのNATIVEデータ型を変換します。独自のfloatvalビジネスが文字列を生成しているため、配列ではなく、jsonでエンコードされた文字列を取得します。

于 2012-12-06T21:36:25.397 に答える
1

あなたはこれをすべて間違っています。これを行う必要はありません。

foreach ($result3 as $row3) {
  $wage[] = '[' . floatval($row3['age']) . ',' . floatval($row3['point']) .']';
}

おそらくあなたが望むのは;

foreach ($result3 as $i => $row3) {
  $newRow = $row3;
  $newRow['age'] = intval($row3['age']);
  $newRow['point'] = floatval($row3['point']);
  $result3[$i] = $newRow;
}

そして、これを行います。

// Create JSON data, assuming that $result3 is an array
$jsonData = json_encode($result3);

// This will give you a JSON string, output this and finish to ensure it IS the only thing output
echo $jsonData;
die;

これで、JavaScriptで、使用しているブラウザで開発コンソールを開き、JavaScriptで次のコードを使用します。

console.log(response)

これにより、変数全体responseがコンソールに出力され、変数から特定のデータを取得する方法をデバッグできるようになりますresponse

お役に立てば幸いです。

于 2012-12-06T21:28:05.023 に答える