background image

ajax.onreadystatechange = function() {
//如果执行状态成功,那么就把返回信息写到指定的层里

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

}
}

}

大致使用 POST 方式的过程就是这样,当然,实际开发情况可能会更复杂,这就需要开发者去慢慢琢磨。

4. 异步回调(伪 Ajax 方式)

一般情况下,使用 Get、Post 方式的 Ajax 我们都能够解决目前问题,只是应用复杂程度,当然,在开发

中我们也许会碰到无法使用 Ajax 的时候,但是我们又需要模拟 Ajax 的效果,那么就可以使用伪 Ajax 的

方式来实现我们的需求。

伪 Ajax 大致原理就是说我们还是普通的表单提交,或者别的什么的,但是我们却是把提交的值目标是一个

 

浮动框架,这样页面就不刷新了,但是呢,我们又 需要看到我们的执行结果,当然可以使用 JavaScript

 

来模拟提示信息,但是,这不是真实的,所以我们就需要我们的执行结果来异步回调,告诉我们执行 结果

是怎么样的。

假设我们的需求是需要上传一张图片,并且,需要知道图片上传后的状态,比如,是否上传成功、文件格式
是否正确、文件大小是否正确等等。那么我们就需要我们的目标窗口把执行结果返回来给我们的窗口,这样

就能够顺利的模拟一次 Ajax 调用的过程。

 

以下代码稍微多一点, 并且涉及 Smarty 模板技术,如果不太了解,请阅读相关技术资料。

上传文件:upload.html
//上传表单,指定 target 属性为浮动框架 iframe1

<form action="/upload.php" method="post" enctype="multipart/form-data" 
name="upload_img" target="iframe1">

选择要上传的图片:<input type="file" name="image"><br />

<input type="submit" value="上传图片">

</form>
//显示提示信息的层

<div id="message" style="display:none"></div>
//用来做目标窗口的浮动框架

<iframe name="iframe1" width="0" height="0" scrolling="no"></iframe>

处理上传的 PHP 文件:upload.php

<?php
/* 

 

定义常量 */

//定义允许上传的 MIME 格式

define("UPLOAD_IMAGE_MIME", "image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-
png,image/png");
//图片允许大小,字节

define("UPLOAD_IMAGE_SIZE", 102400);
//图片大小用 KB 为单位来表示
define("UPLOAD_IMAGE_SIZE_KB", 100);
//图片上传的路径

define("UPLOAD_IMAGE_PATH", "./upload/");
//获取允许的图像格式
$mime = explode(",", USER_FACE_MIME);

$is_vaild = 0;
//遍历所有允许格式
foreach ($mime as $type)

{
if ($_FILES['image']['type'] == $type)

{