2

I am trying to get a 2 dimensional array from php using ajax and jquery.

The problem is that when I run it in php5.4.7 I am getting the expected json response

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

But with php5.1.6 i am getting a response that json is null. How can I make it work in 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 Answer 1

1

json_encode requires version > 5.2.0

For backward compatibility use below code

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) . '}';
}
}
}
Sign up to request clarification or add additional context in comments.

4 Comments

@user1814087 Welcome..:) And accept it if it has solved your problem..:)
@YogeshSuthar..of course..i was banging my head since two days because of this issue..I really got relief now :)
@user1814087 I think it will be good practice if we check which php function we use and in which php version it supports..:)
ya..I will take care of it next time..Thanks:)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.