2013-03-25 75 views
2

我想從php獲取2維數組使用ajax和jquery。在PHP5.1.6上運行時獲取json是空輸出

的問題是,當我在php5.4.7運行它,我得到預期的JSON響應

[["A",46],["B",35],["C",68],["D",30],["E",27],["F",85]] 

但隨着php5.1.6我得到的是json is null的響應。我如何使它在PHP5.1.6中工作?

$.ajax({ 
    type: "POST", 
    url: "get_data.php", 
    data: "", 
    dataType: "json", 
    success: function (json) { 
     var data = json; 

     initChart(data); 
    } 
}); 

header('Content-Type: application/json'); 

$arr=array(); 
$arr = array(
    array('A', 46), 
    array('B', 35), 
    array('C', 68), 
    array('D', 30), 
    array('E', 27), 
    array('F', 85), 
); 
echo json_encode($arr); 

回答

1

json_encode需要version > 5.2.0

對於下面的代碼向後兼容使用

if (!function_exists('json_encode')) 
{ 
function json_encode($a=false) 
{ 
if (is_null($a)) return 'null'; 
if ($a === false) return 'false'; 
if ($a === true) return 'true'; 
if (is_scalar($a)) 
{ 
    if (is_float($a)) 
    { 
    // Always use "." for floats. 
    return floatval(str_replace(",", ".", strval($a))); 
    } 

    if (is_string($a)) 
    { 
    static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); 
    return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"'; 
    } 
    else 
    return $a; 
} 
$isList = true; 
for ($i = 0, reset($a); $i < count($a); $i++, next($a)) 
{ 
    if (key($a) !== $i) 
    { 
    $isList = false; 
    break; 
    } 
} 
$result = array(); 
if ($isList) 
{ 
    foreach ($a as $v) $result[] = json_encode($v); 
    return '[' . join(',', $result) . ']'; 
} 
else 
{ 
    foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v); 
    return '{' . join(',', $result) . '}'; 
} 
} 
} 
+0

那麼有何使它在php5.1.6工作的解決方案? – nikhil 2013-03-25 05:54:07

+0

Google。 http://www.boutell.com/scripts/jsonwrapper.html – 2013-03-25 05:55:11

+0

@ user1814087查看編輯答案。 – 2013-03-25 05:56:38