注意:一定要设置xmlhttp.setrequestheader,否则传往php的参数会变成null(line 38)
亮点在line 31!
<script type="text/javascript"> <br>function GetJson() { <br>var xmlHttp; <br>try { <br>// Firefox, Opera 8.0+, Safari <br>xmlHttp = new XMLHttpRequest(); <br>} <br>catch (e) { <br>// Internet Explorer <br>try { <br>xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); <br>} <br>catch (e) { <br><br>try { <br>xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); <br>} <br>catch (e) { <br>alert("您的浏览器不支持AJAX!"); <br>return false; <br>} <br>} <br>} <br><br>xmlHttp.onreadystatechange = function() { <br>if (xmlHttp.readyState == 4) { <br>//alert(xmlHttp.responseText); <br>var str = xmlHttp.responseText; <br>document.getElementById('show').innerHTML +=str; <br>//alert(str); <br>var obj = eval('('+ xmlHttp.responseText +')'); <br>//var obj = eval(({"id":"123","name":"elar","age":"21"})); <br>alert(obj.name); <br>} <br>} <br>var data = "id=123"; <br>xmlHttp.open("POST", "testJson.php", true); <br>xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); <br>xmlHttp.send("id=123"); <br>} <br></script>
PHP端【testJson.php】:
(注意,php文件要干净,标签的外部不能有其他标签,否则eval函数无法解析)
亮点在line 6
$res['id'] = $_POST['id'];
$res['name'] = "elar";
$res['age'] = "21";
$response = "hello this is response".$_POST['id'];
echo json_encode($res);
?>
总结:
js要往PHP端送数据,用的是xmlHttp.send("id=123");
PHP给js送数据,用的是echo json_encode($res);(要注意变量$res的构造应符合JSON的规范)
js要解析PHP送来的JSON格式的数据,用var obj = eval('('+ xmlHttp.responseText +')');











