在AJAX中没有接收JSON数据

This is my JavaScript file. It is not showing data received from PHP file.

var b1 = document.getElementById('button1');
b1.addEventListener('click',ajax_post());
function ajax_post()
{
document.getElementById("status").innerHTML="You have pressed submit button";
var hr = new XMLHttpRequest();
if(!hr)
{alert("cant create object");}
else {
alert("object created");
}
var url = "popup.php";
var fn = encodeURIComponent(document.getElementById("firstname").value);
var ln = encodeURIComponent(document.getElementById("lastname").value);
var vars = "firstname="+fn+"&lastname="+ln;
hr.open("POST",url,true);



hr.setRequestHeader("Content-type","application/x-www-form-urlencoded");


hr.onreadystatechange = function()
{

var obj = JSON.parse(hr.responseText);

 document.getElementById("status").innerHTML=obj.firstname;



}
hr.send(vars);
return false;
};

and my php file is:

<?php
$header = "Content-Type: application/json";
header($header);
if (isset($_POST['firstname']))

{
 $fnam=$_POST['firstname'];
 $lnam=$_POST['lastname'];
 $data=array("lastname"=>$fnam,"lastname"=>$lnam);
 json_encode($data);
}
 else
 {
 $data=array("firstname"=>"haider","lastname"=>"rehman");
 echo json_encode($data);}
?>

If there is any error please let me know, I am beginner in programming.

you need to echo the json_encode()

replace

json_encode($data);

by

echo json_encode($data);