PHP 與 js的通信(via ajax,json)
更新時(shí)間:2010年11月16日 23:03:44 作者:
一定要設(shè)置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會(huì)變成null(line 38)
JavaScript端:
注意:一定要設(shè)置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會(huì)變成null(line 38)
亮點(diǎn)在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 ?>標(biāo)簽的外部不能有其他標(biāo)簽,否則eval函數(shù)無(wú)法解析)
亮點(diǎn)在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)造應(yīng)符合JSON的規(guī)范)
js要解析PHP送來(lái)的JSON格式的數(shù)據(jù),用var obj = eval('('+ xmlHttp.responseText +')');
注意:一定要設(shè)置xmlHttp.setRequestHeader,否則傳往PHP的參數(shù)會(huì)變成null(line 38)
亮點(diǎn)在line 31!
復(fù)制代碼 代碼如下:
<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 ?>標(biāo)簽的外部不能有其他標(biāo)簽,否則eval函數(shù)無(wú)法解析)
亮點(diǎn)在line 6
復(fù)制代碼 代碼如下:
<?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)造應(yīng)符合JSON的規(guī)范)
js要解析PHP送來(lái)的JSON格式的數(shù)據(jù),用var obj = eval('('+ xmlHttp.responseText +')');
您可能感興趣的文章:
- php實(shí)現(xiàn)的一個(gè)簡(jiǎn)單json rpc框架實(shí)例
- php xml-rpc遠(yuǎn)程調(diào)用
- AMFPHP php遠(yuǎn)程調(diào)用(RPC, Remote Procedure Call)工具 快速入門教程
- php中關(guān)于codeigniter的xmlrpc的類在進(jìn)行數(shù)據(jù)交換時(shí)的類型問題
- PHP實(shí)現(xiàn)與java 通信的插件使用教程
- php與java通過(guò)socket通信的實(shí)現(xiàn)代碼
- PHP與Java進(jìn)行通信的實(shí)現(xiàn)方法
- PHP的Socket通信之UDP通信實(shí)例
- PHP下操作Linux消息隊(duì)列完成進(jìn)程間通信的方法
- PHP與Go語(yǔ)言之間的通信詳解
- php中socket通信機(jī)制實(shí)例詳解
- PHP實(shí)現(xiàn)創(chuàng)建一個(gè)RPC服務(wù)操作示例
相關(guān)文章
微信小程序wx.request實(shí)現(xiàn)后臺(tái)數(shù)據(jù)交互功能分析
這篇文章主要介紹了微信小程序wx.request實(shí)現(xiàn)后臺(tái)數(shù)據(jù)交互功能,分析微信小程序wx.request在后臺(tái)數(shù)據(jù)交互過(guò)程中遇到的問題與相關(guān)的解決方法,需要的朋友可以參考下2017-11-11Javascript中構(gòu)造函數(shù)要注意的一些坑
JavaScript語(yǔ)言是一門面向?qū)ο蟮恼Z(yǔ)言,但JS中并沒有類的概念的。于是JavaScript采用構(gòu)造函數(shù)的方式來(lái)模擬類的效果,即我們通過(guò)函數(shù)來(lái)創(chuàng)建對(duì)象。這也證明了函數(shù)在JavaScript中具有非常重要的地位。本文主要介紹了Javascript中構(gòu)造函數(shù)的一些坑,需要的朋友可以參考。2017-01-01JavaScript中 創(chuàng)建動(dòng)態(tài) QML 對(duì)象的方法
這篇文章主要介紹了 JavaScript中 創(chuàng)建動(dòng)態(tài) QML 對(duì)象,下面文章主要分析了兩中方法,分別是從 QML 字符串創(chuàng)建對(duì)象和動(dòng)態(tài)創(chuàng)建組件以及刪除對(duì)象等方法,具有有一定的參考價(jià)值,需要的小伙伴可以參考一下2021-12-12