我有这段代码:
$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
?
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
,因为你看到它们就像是两个引号之间的字符串
答案 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
变量中获取特定数据。
希望有所帮助。