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],

并且在 javascript 中,我通过具有 name 的 ajax 接收上面输出的这个值var3

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

所以问题是我怎么能parseFloat这个变量age

编辑 。如果我这样提醒 json

   alert (response);

我得到 [object Object] // 注意小 o 和大 O

编辑2。使用的控制台日志

我明白了

  {"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他们,因为你看到它们就像两个引号之间的字符串

4

2 回答 2

3

这是不正确的:

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

您正在构建一个字符串,碰巧看起来像一个 javascript 数组定义,但它仍然只是一个字符串。当它得到 json_encoded 时,它会显示为

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

您需要在 PHP 中的所有阶段构建NATIVE数据结构,例如

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

而不是本机和“类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变量输出到控制台,并使您能够调试如何从responsevar 中获取特定数据。

希望有帮助。

于 2012-12-06T21:28:05.023 回答