PHP 與 js的通信(via ajax,json)
更新時間:2010年11月16日 23:03:44 作者:
一定要設置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會變成null(line 38)
JavaScript端:
注意:一定要設置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會變成null(line 38)
亮點在line 31!
<script type="text/javascript">
function GetJson() {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("您的瀏覽器不支持AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
//alert(xmlHttp.responseText);
var str = xmlHttp.responseText;
document.getElementById('show').innerHTML +=str;
//alert(str);
var obj = eval('('+ xmlHttp.responseText +')');
//var obj = eval(({"id":"123","name":"elar","age":"21"}));
alert(obj.name);
}
}
var data = "id=123";
xmlHttp.open("POST", "testJson.php", true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send("id=123");
}
</script>
<input type="button" onclick="GetJson()" value="按我!"/>
<hr />
<div id="show"></div>
PHP端【testJson.php】:
(注意,php文件要干凈,<?php ?>標簽的外部不能有其他標簽,否則eval函數(shù)無法解析)
亮點在line 6
<?php
$res['id'] = $_POST['id'];
$res['name'] = "elar";
$res['age'] = "21";
$response = "hello this is response".$_POST['id'];
echo json_encode($res);
?>
總結(jié):
js要往PHP端送數(shù)據(jù),用的是xmlHttp.send("id=123");
PHP給js送數(shù)據(jù),用的是echo json_encode($res);(要注意變量$res的構(gòu)造應符合JSON的規(guī)范)
js要解析PHP送來的JSON格式的數(shù)據(jù),用var obj = eval('('+ xmlHttp.responseText +')');
注意:一定要設置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會變成null(line 38)
亮點在line 31!
復制代碼 代碼如下:
<script type="text/javascript">
function GetJson() {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("您的瀏覽器不支持AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
//alert(xmlHttp.responseText);
var str = xmlHttp.responseText;
document.getElementById('show').innerHTML +=str;
//alert(str);
var obj = eval('('+ xmlHttp.responseText +')');
//var obj = eval(({"id":"123","name":"elar","age":"21"}));
alert(obj.name);
}
}
var data = "id=123";
xmlHttp.open("POST", "testJson.php", true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send("id=123");
}
</script>
<input type="button" onclick="GetJson()" value="按我!"/>
<hr />
<div id="show"></div>
PHP端【testJson.php】:
(注意,php文件要干凈,<?php ?>標簽的外部不能有其他標簽,否則eval函數(shù)無法解析)
亮點在line 6
復制代碼 代碼如下:
<?php
$res['id'] = $_POST['id'];
$res['name'] = "elar";
$res['age'] = "21";
$response = "hello this is response".$_POST['id'];
echo json_encode($res);
?>
總結(jié):
js要往PHP端送數(shù)據(jù),用的是xmlHttp.send("id=123");
PHP給js送數(shù)據(jù),用的是echo json_encode($res);(要注意變量$res的構(gòu)造應符合JSON的規(guī)范)
js要解析PHP送來的JSON格式的數(shù)據(jù),用var obj = eval('('+ xmlHttp.responseText +')');
您可能感興趣的文章:
- php實現(xiàn)的一個簡單json rpc框架實例
- php xml-rpc遠程調(diào)用
- AMFPHP php遠程調(diào)用(RPC, Remote Procedure Call)工具 快速入門教程
- php中關于codeigniter的xmlrpc的類在進行數(shù)據(jù)交換時的類型問題
- PHP實現(xiàn)與java 通信的插件使用教程
- php與java通過socket通信的實現(xiàn)代碼
- PHP與Java進行通信的實現(xiàn)方法
- PHP的Socket通信之UDP通信實例
- PHP下操作Linux消息隊列完成進程間通信的方法
- PHP與Go語言之間的通信詳解
- php中socket通信機制實例詳解
- PHP實現(xiàn)創(chuàng)建一個RPC服務操作示例
相關文章
HTML使用js給input標簽增加disabled屬性的方法
最近項目上提出一個經(jīng)常遇到的需求,點擊新增時input可輸入,點擊編輯時input置灰,下面這篇文章主要給大家介紹了關于HTML使用js給input標簽增加disabled屬性的相關資料,需要的朋友可以參考下2024-06-06
js實現(xiàn)按鈕控制圖片360度翻轉(zhuǎn)特效的方法
這篇文章主要介紹了js實現(xiàn)按鈕控制圖片360度翻轉(zhuǎn)特效的方法,涉及HTML5中canvas方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02
MockJs結(jié)合json-server模擬后臺數(shù)據(jù)
這篇文章主要為大家詳細介紹了MockJs結(jié)合json-server模擬后臺數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
echarts報錯Cannot?read?properties?of?null?(reading?‘getA
最近在開發(fā)Echarts忽然遇到了個問題,這篇文章主要給大家介紹了關于echarts報錯Cannot?read?properties?of?null?(reading?‘getAttribute‘)的解決方法,需要的朋友可以參考下2023-01-01

