php ajax 的应用主要是用在一些不需要刷新的数据提交上,随便起一个例子
顺便看看php ajax 的乱码问题。
下面是某个xxx.js的源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | /** * 初始化一个xmlhttp对象 */ function InitAjax() { var ajax=false; try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { ajax = false; } } if (!ajax && typeof XMLHttpRequest!='undefined') { ajax = new XMLHttpRequest(); } return ajax; } function go() { var currSelectValue = document.getElementById("username").value; //接收表单的URL地址 var url = "./index.php"; //需要POST的值,把每个变量都通过&来联接 var postStr = "username="+ currSelectValue; //实例化Ajax var ajax = InitAjax(); //通过Post方式打开连接 ajax.open("POST", url, true); //定义传输的文件HTTP头信息 ajax.setrequestheader("content-length",postStr.length); ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //发送POST数据 ajax.send(postStr); //获取执行状态 ajax.onreadystatechange = function() { //如果执行状态成功,那么就把返回信息写到指定的层里 if (ajax.readyState == 4 && ajax.status == 200) { msg.innerHTML = ajax.responseText; } } } //对应的index.php 也许是这个样子 <?php header("Content-Type:text/html;charset=GBK"); //指定php输出编码为gbk 防止乱码 $username = $_POST['username']; $username = iconv('utf-8','gbk',$username); //请记住ajax进来的参数都是utf-8格式的,一般需要转换 exit('你的名字是:'.$username); ?> //对应的html也许是这个样子 <input type="text" id="username" value="" /> //输入username的地方 <div id="msg"></div> //其他代码省略。 |
这就是一个相对完整的php ajax应用了,当然上面的程序什么也没干
它的经过是这样:
在input框里输入一些字符(你可以试试中文以便验证回显是否乱码)
然后通过类似 onclick=”go()” 这样的方式去执行 go 函数
go函数里面写得很详细了,它把需要的参数组织起来,做成一个 url,然后通过Post方式打开连接。
这个链接执行了index.php这个php程序。取得username直接返回,反馈的信息会显示在msg.innerHTML
这里要说一句,思想要放开点,如果你把exit那句代码改成
exit(’
我的名字是:‘.$username.’‘); 它将会先回车一行,然后显示 我的名字是:xxxx
xxxx还是红色的字体哦。
所以,相当于你几乎可以做任何事情。
上面是php ajax 的post方式传递,还有另外一种get方式传递
get只传递比较少的值
上面的xxx.js大约改成这样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | function go() { var currSelectValue = document.getElementById("username").value; //接收表单的URL地址 var url = "./index.php?username="+currSelectValue; //实例化Ajax var ajax = InitAjax(); //通过Post方式打开连接 ajax.open("GET", url, true); //定义传输的文件HTTP头信息 ajax.setrequestheader("content-length",postStr.length); ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //获取执行状态 ajax.onreadystatechange = function() { //如果执行状态成功,那么就把返回信息写到指定的层里 if (ajax.readyState == 4 && ajax.status == 200) { msg.innerHTML = ajax.responseText; } } //发送空 ajax.send(null); } |
其实差不多的。
php ajax使用注意:
1.多个参数传递需要用&连接起来
2.POST 方式传递的时候,表单
Recent Comments