Pygame学习笔记1:起步

初始化
要使用pygame先要对其初始化。pygame的初始化是非常简单的,首先我们必须先导入(import)pygame这个包。

import pygame
from pygame.locals import *

第一行是必须的,它导入了pygame包中所有可用的模块。第二行是可选的,它把一些常量和函数放在global名字空间中。


必需注意的是,有些pygame模块是可选的,比如font模块。当你import pygame时,pygame会检查font模块是否存在。如果font模块存在,那么它会自动被导入为pygame.font。如果它不存在,pygame.font会被设置成None。


在用pygame前,必须先初始化。一般只要一句话就可以完成:

pygame.init()

执行这个语句,它会试着去初始化所有的pygame模块。并不是所有的模块都是需要初始化的,这个语句会自动去初始化那些需要初始化的模块。你也可以手动的去初始化各个模块,比如说要单独初始化display模块可以这样做:

pygame.display.init()

注意,如果执行pygame.init()初始化有错误,它不会给出异常。如果手动初始化单个模块,错误会导致抛出异常。任何必须初始化的模块都包含一个get_init()函数,来判断这个模块是否已经被初始化。

可以对任何模块多次调用init()函数而不会出错。


已经初始化的模块通常会有一个quit()函数来完成清理工作。没有必要显式的调用这个函数,因为pygame会在python退出的时候自动清理所有已经初始化的模块。

surface和屏幕

pygame最重要的部分就是surface。我们可以把surface看作是一张白纸。你可以对surface作很多操作。一个surface可以是任何大小,一个游戏可以有任意多surface。其中有一个surface是特别的,就是用pygame.display.set_mode()创建的display surface。它代表了屏幕,对它的任何操作会出现在用户的屏幕上。一个游戏只能有一个这样的surface,这是SDL的限制。


surface的大部分方法都不重要,只要学习其中的blit(), fill(), set_at()和get_at()就够用了。

display surface的初始化操作是这样的:

screen = pygame.display.set_mode((1024, 768))

或者

screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)

set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。

标志位 功能

FULLSCREEN 创建一个全屏窗口

DOUBLEBUF 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用

HWSURFACE 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用

OPENGL 创建一个OPENGL渲染的窗口

RESIZABLE 创建一个可以改变大小的窗口

NOFRAME 创建一个没有边框的窗口


使用pygame.display.list_modes()可以查看当前设备支持的分辨率。

使用update函数把内容显示到屏幕上。

pygame.display.update()

如果使用DOUBLEBUF,你需要用flip函数。

pygame.display.flip()

Pygame学习笔记0:简介

学习Pygame也有一段时间了,现在整理一下笔记作为备忘。

介绍

pygame是主要构筑在SDL库基础上的一组Python模块的集合,它使我们能够用Python语言来创建功能完整的游戏和多媒体程序。pygame是高度括平台可移植的,在任何SDL支持的平台上都可以运行(几乎可以在任何平台和操作系统上运行)。

注:SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,可以用来访问底层的音频、键盘、鼠标、摇杆、3D硬件(通过OpenGL)以及2D视频缓冲。它被用在MPEG播放软件、模拟器和很多流行的游戏中,包括获得大奖的Linux版的”Civilization: Call To Power”。

pygame是自由、免费的,以GNU LGPL 2.1协议发布。这协议基本上就让你可以在你的任何项目中使用pygame。你可以用它来创建开源、自由、免费、共享或者商业游戏。但是如果你要增加和改变pygame本身的功能,你必须以一种LGPL兼容的协议来发布这种修改。

而examples子目录中的程序属于公共域软件。

安装

要学习Pygame需要先安装Python和Pygame。

Python下载地址:http://python.org/download/

Pygame下载地址:http://www.pygame.org/download.shtml

我用的是Python 2.6.6和Pygame 1.9.1release

Pygame有很多的模块,下面是各模块一览:

模块名 功能

pygame.cdrom 访问光驱

pygame.cursors 加载光标

pygame.display 访问显示设备

pygame.draw 绘制形状、线和点

pygame.event 管理事件

pygame.font 使用字体

pygame.image 加载和存储图片

pygame.joystick 使用游戏手柄或者 类似的东西

pygame.key 读取键盘按键

pygame.mixer 声音

pygame.mouse 鼠标

pygame.movie 播放视频

pygame.music 播放音频

pygame.overlay 访问高级视频叠加

pygame 就是我们在学的这个东西了……

pygame.rect 管理矩形区域

pygame.sndarray 操作声音数据

pygame.sprite 操作移动图像

pygame.surface 管理图像和屏幕

pygame.surfarray 管理点阵图像数据

pygame.time 管理时间和帧信息

pygame.transform 缩放和移动图像

注:有些模块可能在某些平台上可能不存在。

PyGTK for Win32集成安装包

这个是国外的一强人制作的,支持Python2.5~2.7。
该安装包包含如下内容:

PyGTK 2.17.0 with numpy support

PyGobject 2.21.5

PyCairo 1.8.10

PyGtkspell, PyGTKhtml2, PyGDL 2.25.3

PyGDA 2.29.1

PyGST (Python Gstreamer) 0.10.20

PyWebkitGTK 1.18

PyClutter 1.3.2 with gst and gtk binding

PyGTKGlExt 1.1.0

PyGoocanvas 0.14.1

PyGTKSourceview 2.10.0

PyGTKImageview 1.2.0

PyRSVG 2.30

PyScintilla 1.99

PMing 4.4

Python Poppler 0.12 GPL

VIPSCC 7.24

安装之前请卸载之前的版本。

2011-07-02
pygtk_aio-2011_win32_installer_py25-27-rev5.exe
md5:32c0558754ae06e14d5db466037ce174
下载地址: http://u.115.com/file/aqzkqxd3

2011-03-30
pygtk_aio-2011_win32_installer_py25-27-rev4.exe
md5:eb80322f7da800196cb77d79d7e7d6a2
下载地址:http://u.115.com/file/clgslsma

pygtk_aio-2011_win32_installer-rev2.exe
下载地址:http://u.115.com/file/aqzknhvq

原作者博客:http://opensourcepack.blogspot.com/2011/01/conservative-all-in-one-pygtk-installer.html

NERD_commenter——VIM批量注释与反注释插件

这是对程序员非常实用的一款插件,支持多种语言的补全,还支持单行注释,批量注释,等各种命令映射。

使用方法,先下载该插件:http://www.vim.org/scripts/script.php?script_id=1218

将NERD_commenter.vim文件放到~/.vim/plugin目录下,将NERD_commenter.txt文件放到~/.vim/doc目录下。

然后使用<leader>cc快捷键进行注释选中的行,<leader>cu进行反注释。

其中<leader>是键盘映射,默认情况下是反斜杆“”,则上述快捷键分别为:cc和cu。你可以使用命令自定义,例如命令:let mapleader=”,”将<leader>定义为”,”键。

还有不懂的使用:help NERDCommenter命令查看帮助。

PHP导出Excel

PHPExcel是一个用PHP写的开源的相当强大的 MS Office Excel 文档生成类库。

下面给出一个例子,有编程基础应该可以根据这个例子举一反三。

首先,先下载PHPExcel( http://www.phpexcel.net )。国外的网站速度比较慢的话可以到这里下载:http://u.115.com/file/clgk4q5t

下载解压后,将Classes目录里的内容上传到你的服务器上。然后新建一个文件saveas_excel.php,与Classes目录里的文件处于同一目录中。

saveas_excel.php内容如下:

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<?

//设置PHPExcel类库的include path

//set_include_path('.'. PATH_SEPARATOR .

// 'D:ZealPHP_LIBS' . PATH_SEPARATOR .

// get_include_path());

/**

* 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要

* 打开对应行的注释。

* 如果使用 Excel5 ,输出的内容应该是GBK编码。

*/

require_once 'PHPExcel.php';

// uncomment

require_once 'PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls

// or

////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式

// 创建一个处理对象实例

$objExcel = new PHPExcel();

// 创建文件格式写入对象实例, uncomment

$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式

// or

////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式

////$objWriter->setOffice2003Compatibility(true);

//*************************************

//设置文档基本属性

$objProps = $objExcel->getProperties();

$objProps->setCreator("Zeal Li");

$objProps->setLastModifiedBy("Zeal Li");

$objProps->setTitle("Office XLS Test Document");

$objProps->setSubject("Office XLS Test Document, Demo");

$objProps->setDescription("Test document, generated by PHPExcel.");

$objProps->setKeywords("office excel PHPExcel");

$objProps->setCategory("Test");

//*************************************

//设置当前的sheet索引,用于后续的内容操作。

//一般只有在使用多个sheet的时候才需要显示调用。

//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0

$objExcel->setActiveSheetIndex(0);

$objActSheet = $objExcel->getActiveSheet();

//设置当前活动sheet的名称

$objActSheet->setTitle('测试Sheet');

//*************************************

//设置单元格内容

//

//由PHPExcel根据传入内容自动判断单元格内容类型

$objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容

$objActSheet->setCellValue('A2', 26); // 数值

$objActSheet->setCellValue('A3', true); // 布尔值

$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式

//显式指定内容类型

$objActSheet->setCellValueExplicit('A5', '847475847857487584',

PHPExcel_Cell_DataType::TYPE_STRING);

//合并单元格

$objActSheet->mergeCells('B1:C22');

//分离单元格

//$objActSheet->unmergeCells('B1:C22');

//*************************************

//设置单元格样式

//

//设置宽度

$objActSheet->getColumnDimension('B')->setAutoSize(true);

$objActSheet->getColumnDimension('A')->setWidth(30);

$objStyleA5 = $objActSheet->getStyle('A5');

//设置单元格内容的数字格式。

//

//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,

//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的

//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode

//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要

//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,

//在 if ($this->_BIFF_version == 0×0500) { (第363行附近)前面增加一

//行代码:

//if($ifmt === '0') $ifmt = 1;

//

//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字

//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容

//都按原始内容全部显示出来。

$objStyleA5

->getNumberFormat()

->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

//设置字体

$objFontA5 = $objStyleA5->getFont();

$objFontA5->setName('Courier New');

$objFontA5->setSize(10);

$objFontA5->setBold(true);

$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);

$objFontA5->getColor()->setARGB('FF999999');

//设置对齐方式

$objAlignA5 = $objStyleA5->getAlignment();

$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

//设置边框

$objBorderA5 = $objStyleA5->getBorders();

$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color

$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置填充颜色

$objFillA5 = $objStyleA5->getFill();

$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);

$objFillA5->getStartColor()->setARGB('FFEEEEEE');

//从指定的单元格复制样式信息.

$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');

//*************************************

//添加图片

$objDrawing = new PHPExcel_Worksheet_Drawing();

$objDrawing->setName('ZealImg');

$objDrawing->setDescription('Image inserted by Zeal');

$objDrawing->setPath('./zeali.net.logo.gif');

$objDrawing->setHeight(36);

$objDrawing->setCoordinates('C23');

$objDrawing->setOffsetX(10);

$objDrawing->setRotation(15);

$objDrawing->getShadow()->setVisible(true);

$objDrawing->getShadow()->setDirection(36);

$objDrawing->setWorksheet($objActSheet);

//添加一个新的worksheet

$objExcel->createSheet();

$objExcel->getSheet(1)->setTitle('测试2');

////保护单元格

$objExcel->getSheet(1)->getProtection()->setSheet(true);

$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');

//*************************************

//输出内容

//

$outputFileName = time().".xls";

////导出到文件,保存到服务器上,需要自行下载

//try{

// $objWriter->save($outputFileName);

// echo "导出到".$outputFileName."成功!";

//}

//catch(Exception $e){

// echo "<p><b>导出失败!".$outputFileName."可能正在被使用!</b></p>";

// //echo $e;

//}

//or

////导出到浏览器,自动下载到本地

try{

header("Content-Type: application/force-download");

header("Content-Type: application/octet-stream");

header("Content-Type: application/download");

header('Content-Disposition:inline;filename="'.$outputFileName.'"');

header("Content-Transfer-Encoding: binary");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Pragma: no-cache");

$objWriter->save('php://output');

}

catch(Exception $e){

echo "<p><b>导出失败!</b></p>";

}

?>

如果有不懂的请自己看DocumentationAPI目录中的文档。

PHP对XML的读写实例

新建两个文件,文件名分别为:photo_list.php、photo_list.xml,放在同一目录下。

photo_list.xml文件内容:

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo>
<filename>flashmo_175_01.jpg</filename>
<title>精美相框</title>
<description>
</description>
</photo>
<photo>
<filename>flashmo_175_02.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_03.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_04.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_05.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_06.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_07.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_08.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_09.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_10.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_11.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_12.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_13.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_14.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_15.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_16.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>flashmo_175_17.jpg</filename>
<title>精美相框</title>
<description>
精美相框
</description>
</photo>
<photo>
<filename>1300513578.jpg</filename>
<title>精美相框</title>
<description>精美相框</description>
</photo>
<photo>
<filename>1300513595.jpg</filename>
<title>精美相框</title>
<description>精美相框</description>
</photo>
<photo>
<filename>1300514082.jpg</filename>
<title>精美相框</title>
<description>精美相框</description>
</photo>
</photos>

photo_list.php文件内容:

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
79
80
81
82
83
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<head>
<title>XML Library</title>
</head>
<?php
$xml = new DOMDocument('1.0');
$xml->load( 'photo_list.xml' );
switch($_GET['action']){
//添加内容
case 'add':
$filename2 = time().'.jpg';
$root=$xml->getElementsByTagName('photos')->item(0);
//创建结点
$Nphoto=$xml->createElement('photo');
$Nfilename=$xml->createElement('filename');
$Ntitle=$xml->createElement('title');
$Ndescription=$xml->createElement('description');
//各结点的值
$Tfilename=$xml->createTextNode($filename2);
$Ttitle=$xml->createTextNode('精美相框');
$Tdescription=$xml->createTextNode('精美相框');
//值插入结点
$Nfilename->appendChild($Tfilename);
$Ntitle->appendChild($Ttitle);
$Ndescription->appendChild($Tdescription);
//保存结点
$Nphoto->appendChild($Nfilename);
$Nphoto->appendChild($Ntitle);
$Nphoto->appendChild($Ndescription);
$root->appendChild($Nphoto);
$xml->save('photo_list.xml');
echo "添加成功!";
exit();
//删除内容
case 'del':
$filename = $_GET['file'];
$root=$xml->getElementsByTagName('photos')->item(0);
$N_photo=$root->getElementsByTagName('photo');
foreach($N_photo as $Nphoto){
$N_filename=$Nphoto->getElementsByTagName('filename');
if($N_filename->item(0)->firstChild->nodeValue==$filename){
$root->removeChild($Nphoto);
$xml->save('photo_list.xml');
echo "删除成功!";
}
}
exit();
//列出内容
default:
}

$description = array();
$filename = array();
$title = array();
$count = 0;
$XMLGroups = $xml->getElementsByTagName('photos')->item(0);
foreach($XMLGroups->getElementsByTagName('photo') as $groupNode) {
$description[$count] = $groupNode->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
$filename[$count] = $groupNode->getElementsByTagName('filename')->item(0)->firstChild->nodeValue;
$title[$count] = $groupNode->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
$count++;
}

?>

<body>
<br />

<?
$Length=count($filename);
$i=0;
while($i<$Length){
echo '<div style="border:1px; border-style:dashed; border-color:#000000; width:820px;">';
echo "文件名:$filename[$i]<br>标题:$title[$i]<br>描述:$description[$i]<br>";
echo '</div><br>';
$i++;
}
?>

<br />
</body>
</html>

PHP GET方法ajax实例

首先新建两个文件,文件名分别为:mail.html、mail.php,放在同一目录下。

mail.html文件内容如下:

 1 <html>

 2 <head>

 3 <meta http-equiv="content-type" content="text/html;charset=utf-8">

 4 </head>

 5 <body>

 6 <form action="" method="post" name="form1" id="form1">

 7 <table border="1" width="100%">

 8 <tr><td height="30">

 9 请选择:

10 <select name="Card_Choice" id="Card_Choice" onChange="valideMail(this)">

11

12 <option id="s1" value="无"></option>

13

14 <option id="s2" value="123">123</option>

15

16 <option id="s3" value="abc">abc</option>

17

18 <option id="s4" value="34dfd@">34dfd@</option>

19

20 </select><span id="show"></span>

21

22 </td></tr>

23

24 </table>

25

26 </form>

27

28 </body>

29

30 </html>

31

32 <script language="javascript">

33

34 var xmlHttp;

35

36 function valideMail(obj) {

37

38 //var email = document.getElementById("eMail");

39

40 var url = "mail.php?email=" + obj.value;

41

42 if (window.ActiveXObject) {

43

44 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

45

46 } else if (window.XMLHttpRequest) {

47

48 xmlHttp = new XMLHttpRequest();

49

50 }

51

52 xmlHttp.onreadystatechange = callBack;

53

54 xmlHttp.open(‘GET’, url, true);

55

56 xmlHttp.send(null);

57

58 }

59

60 function callBack() {

61

62 if (xmlHttp.readyState == 4) {

63

64 if (xmlHttp.status == 200) {

65

66 document.getElementById("show").innerHTML = "show:" + xmlHttp.responseText;

67

68 }

69

70 }

71

72 }

73

74 </script>

mail.php文件内容如下:

 1 <?php

 2

 3 $email = $_GET["email"];

 4

 5 if ($email == "") {

 6

 7 $email = "rrrrrrrrrrrrrrrrrr !";

 8

 9 }

10

11 echo ($email);

12

13 exit(0);

14

15 ?>

PHP POST方法ajax实例

首先新建两个文件,文件名分别为:ajax_post.html、ajax_output_post.php,放在同一目录下。

ajax_post.html内容如下:

 1 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>

 2

 3 <script language="javascript">

 4

 5 function saveUserInfo() {

 6

 7 //获取接受返回信息层

 8

 9 var msg = document.getElementById("msg");

10

11 //获取表单对象和用户信息值

12

13 var f = document.user_info; var userName = f.user_name.value; var userAge = f.user_age.value; var userSex = f.user_sex.value;

14

15 //接收表单的URL地址

16

17 var url = "ajax_output_post.php";

18

19 //需要POST的值,把每个变量都通过&来联接

20

21 var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

22

23 //实例化Ajax //var ajax = InitAjax();

24

25 // var ajax = false;

26

27 //开始初始化XMLHttpRequest对象

28

29 if(window.XMLHttpRequest) {

30

31 //Mozilla 浏览器

32

33 ajax = new XMLHttpRequest();

34

35 if (ajax.overrideMimeType) {

36

37 //设置MiME类别

38

39 ajax.overrideMimeType("text/xml"); }

40

41 } else if (window.ActiveXObject) {

42

43 // IE浏览器

44

45 try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!ajax) {

46

47 // 异常,创建对象实例失败

48

49 window.alert("不能创建XMLHttpRequest对象实例."); return false; }

50

51 //通过Post方式打开连接

52

53 ajax.open("POST", url, true);

54

55 //定义传输的文件HTTP头信息

56

57 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

58

59 //发送POST数据

60

61 ajax.send(postStr);

62

63 //获取执行状态

64

65 ajax.onreadystatechange = function() {

66

67 //如果执行状态成功,那么就把返回信息写到指定的层里

68

69 if (ajax.readyState == 4 && ajax.status == 200) { msg.innerHTML = ajax.responseText; } }

70

71 }

72

73 </script>

74

75 <body > ?<form name="user_info" method="post" action=""> 姓名:<input type="text" name="user_name" /><br /> 年龄:<input type="text" name="user_age" /><br /> 性别:<input type="text" name="user_sex" /><br />

76

77 <input type="button" value="提交表单" onClick="saveUserInfo()"> </form><div id="msg"> </div> </body>

ajax_output_post.php内容如下:

1 <?

2  

3 echo ’姓名:.$_POST[user_name].<br>‘;

4  

5 echo ’年龄:.$_POST[user_age].<br>‘;

6  

7 echo ’性别:.$_POST[user_sex].<br>‘;

8  

9 ?>

一些开发手册下载

最近收集整理了一些可能会用得上的开发手册,顺便分享一下。

shell编程手册.pdf http://u.115.com/file/f5b4066e87

php_manual_zh.chm(php中文手册) http://u.115.com/file/f5e120322a

W3C_Javascript参考手册_2010-07-19.chm http://u.115.com/file/f553fd50e3

Linux_c库函数参考手册.pdf http://u.115.com/file/f54fee1a8

C语言标准库函数查询手册.pdf http://u.115.com/file/f52f739afa

gtk函数手册.rar http://u.115.com/file/f576f4ba8d

gtk_2.0中文指南.rar http://u.115.com/file/f534036897

GTK+_API.gz http://u.115.com/file/f518d8b95b

python-3.1.2-docs-html.tar.bz2(python-3.1.2官方手册) http://u.115.com/file/f59bee52a2

python-2.6.6-docs-html.tar.bz2(python-2.6.6官方手册) http://u.115.com/file/f54da60b40

pygtk_2.24.0-docs-html.tar(pygtk_2.24.官方手册) http://u.115.com/file/f5f02cfa2d

pygtk_2.14.0-docs-html.tar(pygtk_2.14.官方手册) http://u.115.com/file/f58acb5b52