怎么解析浮动这个?

时间:2012-12-06 21:08:20

标签: php javascript ajax

我有这段代码:

$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中通过名称为var3的ajax接收上述值。

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

所以问题是我如何parseFloat这个变量age

编辑。 如果我像那样警告json

   alert (response);

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

EDIT2。 使用consol log

我得到了这个

  {"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 个答案:

答案 0 :(得分:3)

这是不正确的:

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

你正在构建一个字符串,巧合的是LOOK就像一个javascript数组定义,但它仍然只是一个字符串。当这得到json_encoded时,它将作为

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

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

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

而不是这种土生土长的“json-like”字符串。 json_encode()转换等效Javascript类型的 NATIVE 数据类型。由于您自己的floatval业务正在生成一个字符串,您将获得一个json编码的字符串,而不是一个数组。

答案 1 :(得分: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变量中获取特定数据。

希望有所帮助。