My code is as follows
foreach($location_total_n_4 as $u=> $v) {
$final_location_total_4 .= "[".$u.",".$v."],";
}
I'm sending these values as JSON.
echo json_encode(array("location"=>"$final_location_total_4" ));
Here's how my response object looks:
{
"location": "[1407110400000,6641],[1407196800000,1566],[1407283200000,3614],"
}
I'm creating graph on success with ajax.so I need it like this,
{
"location": [1407110400000,6641],[1407196800000,1566],[1407283200000,3614],
}
Can anyone help me to solve this?
解决方案
The problem is that your location value is non-properly serialized value. It's definitely appropriate to fix on the server-side (looks like one's trying to implement their own json_encode and failing), but it's possible to fix on the client-side as well. One possible approach:
var location = JSON.parse('[' + response.location.slice(0,-1) + ']');
Demo. slice(0,-1) removes the trailing comma, then the contents are wrapped into brackets, turning them into a proper JSON (at least for the given dataset).
As for server-side, turned out I was right: this code...
foreach($location_total_n_4 as $u=> $v) {
$final_location_total_4 .= "[".$u.",".$v."],";
}
echo json_encode(array('location' => "$final_location_total_4"));
... is wrong both tactically (always adding a trailing comma) and strategically (one shouldn't solve the task already solved by the language itself). One possible replacement:
$locations = array();
foreach ($location_total_n_4 as $u => $v) {
$locations[] = array($u, $v);
}
echo json_encode(array('location' => $locations));
The bottom line: never attempt to implement your own serialization protocol unless you're really know what're you doing.