php ajax 初步应用以及php ajax乱码问题。

php技巧

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 方式传递的时候,表单

里面不需要 method=”post” action=”" 这些东西
3.参数经过ajax 传到php里,必然是utf8的,请注意转码。
一般情况下是可以防止php ajax乱码的。

Leave a Reply

Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress and Free WordPress Themes
Entries RSS Comments RSS Log in