结合AJAX进行PHP开发之入门(三)

 更新时间:2016年11月25日 15:29  点击:2013

将 Sajax 连接到相册

  利用刚刚创建的代码,我们将用 Sajax 迅速把相册从多页面应用程序转化成活动的 Ajax 应用程序。

  因为相册主要有两个函数,get_table() 和 get_image(),这也是需要用 Sajax 导出的全部函数。事实上,为了通过 Sajax 调用这些函数,这些函数本身基本上不需要修改,很快我们就会看到,我们只需要修改生成的链接即可。

  清单 9. Sajax 相册的头部

<?php
require("Sajax.php");

function get_image () { } // Defined later
function get_thumbs_table () { } // Defined later

// Standard Sajax stuff. Use Get, and export two
// main functions to javascript
$sajax_request_type = "GET";
sajax_init();
sajax_export("get_thumbs_table", "get_image");
sajax_handle_client_request();
?>

  对于本文而言,文档主体部分很简单。我们将使用 div 和 window 的 id 来显示服务器的输出。

  清单 10. 显示服务器输出的 div 和 window id

<body>
<h1>Sajax photo album</h1>
<div id="window"></div>
</body>

  最后还要编写 JavaScript 回调函数。该例中,因为所有的服务器输出都直接输出到 window div 标记,所以可以重复使用简单的回调函数。将回调函数添加到 Sajax 函数调用中,就可以得到头(head)。

  清单 11. 简单的头

<head>
<title>Creating a Sajax photo album</title>
<style type="text/css">
body { text-align: center }
div#window { margin: 0 auto 0 auto; width: 700px;
padding: 10px; border: 1px solid #ccc; background: #eee; }
table.image_table { margin: 0 auto 0 auto; }
table.image_table td { padding: 5px }
table.image_table a { display: block; }
table.image_table img { display: block; width: 120px
padding: 2px; border: 1px solid #ccc; }
img.full { display: block; margin: 0 auto 0 auto;
width: 300px; border: 1px solid #000 }
</style>

<script language="javascript">
<? sajax_show_javascript(); ?>

// Outputs directly to the "window" div
function to_window(output) {
 document.getElementById("window").innerHTML = output;
}

window.onload = function() {
 x get table to window);
};

</script>
</head>

  最后一步是保证应用程序中的所有链接都是自定义的 Sajax 调用。只需要取上一节中的代码并作如下替换:href="index.php?start=0&step=5" 变为 onclick="x_get_table(0, 5, to_window)",href="expand.php?index=0" 变为 onclick="x_get_image(0, to_window)"。

  并在相应的函数中做同样修改:get_image_link() 和 get_table_link()。这样向 Sajax 的转化就完成了(如图 6 所示)。所有链接都变成了与远程 PHP 调用对应的 JavaScript 调用,PHP 使用 JavaScript 响应处理程序 to_window() 直接输出到页面。

  整个应用程序都包含在一个页面中,还可以把其余功能(get_table()、get_image() 等)放在不能从 Web 访问的单独的库文件中。在大多数 Ajax 应用程序中,每个发往服务器的请求都需要由单独的脚本处理,或至少需要编写一个非常庞大的处理程序脚本来重定向请求。将所有这些文件都集中到一起可能非常麻烦。使用 Sajax 永远只需要一个文件,在该文件中只需定义我们使用的函数即可。Sajax 代替了处理程序脚本。


  可以看到 URL 仍然保持不变,并带来了更多愉快的用户体验。window div 显示在一个灰色的框中,通过 Sajax 生成的内容非常清楚。脚本不一定要知道自身或者它在服务器上的位置,因为所有的链接最终都成为直接对页面自身的 JavaScript 调用。因此我们的代码能够很好的模块化。我们只需要保持 JavaScript 和 PHP 函数在同一个页面上即可,即使页面位置发生了变化也没有关系。

  扩展相册

虽然 LAMP 组合很不错,但是假如想要架设一台同时支持PHP、ASP、ASP.NET、JSP、Perl的Web虚拟主机服务器,还是用 Windows 2003的IIS 6最好。网上有很多介绍在IIS 6上配置PHP的文章,但是那些方法不是性能不好,就是升级麻烦。下面的方法可以让你在第一次配置好后,能够非常方便的进行升级。
  这里所说的升级,是指从某个php4版本升级到另一个php4版本,或者从某个php5版本升级到另一个php5版本,而不是指从php4升级到php5。

  预备:

  1、一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6。

  2、下载 windows 版的 PHP 二进制压缩包

  安装:

  解压缩 PHP 二进制压缩包到 C:php 目录下(这里假设 C: 盘是系统盘,即安装了Windows 系统的盘,假如系统盘是 D: 盘,则解压缩到 D:php 目录下,以此类推,下同)。

  然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:

  C:php;C:phpdlls;C:phpextensions;C:phpsapi;

  将 php.ini-dist 或 php.ini-recommended 复制到 C:Windows 目录下,并改名为 php.ini,一般正式发布网站的服务器用 php.ini-dist,而作为调试用的服务器用 php.ini-recommended 更好。当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。

  下面来介绍一下几个必要的修改选项:

  extension_dir = "C:phpextensions"

  这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。

  extension=php_mbstring.dll

  ;extension=php_big_int.dll

  extension=php_bz2.dll

  extension=php_cpdf.dll

  extension=php_crack.dll

  extension=php_curl.dll

  extension=php_db.dll

  extension=php_dba.dll

  extension=php_dbase.dll

  extension=php_dbx.dll

  extension=php_domxml.dll

  ;extension=php_exif.dll

  ;extension=php_fdf.dll

  ;extension=php_filepro.dll

  extension=php_gd2.dll

  extension=php_gettext.dll

  extension=php_hyperwave.dll

  extension=php_iconv.dll

  ;extension=php_ifx.dll

  ;extension=php_iisfunc.dll

  extension=php_imap.dll

  ;extension=php_interbase.dll

  extension=php_java.dll

  extension=php_ldap.dll

  ;extension=php_mcrypt.dll

1.安装环境
操作系统:Red Hat Linux Enterprise AS 4.0
数据库:MySQL 5.0.24
Web服务器:Apache 2.2.3
脚本语言:PHP 5.1.6

2.安装MySQL 5.0.24
-------------下载软件包mysql-5.0.24.tar.gz,地址http://www.mysql.com-------------
# tar zvxf mysql-5.0.24.tar.gz //解压缩
# cd mysql-5.0.24 //进入解压缩后的文件目录
# ./configure --prefix=/usr/local/mysql \ //设定安装目录
--enable-thread-safe-client \ //编译线程安全版的客户端库
--without-debug \ //关闭debug功能
--localstatedir=/data/mysqldata \ //设定数据库文件目录
# make //编译
# make install //安装
# /usr/local/mysql/bin/mysql_install_db //初始化授权
# chown –R root:root /usr/local/mysql //文件属性改为root用户
# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf //复制配置文件
----------------------------------启动MySQL服务----------------------------------
# /usr/local/mysql/bin/mysqld_safe --user=root & //启动MySQL
----------------------------------修改MySQL密码----------------------------------
# /usr/local/mysql/bin/mysqladmin -uroot password mysqlsecret //修改密码
----------------------------------关闭MySQL服务----------------------------------
# /usr/local/mysql/bin/mysqladmin -uroot -pmysqlsecret shutdown //关闭MySQL

3.安装Apache 2.2.3
-------------下载软件包httpd-2.2.3.tar.gz,地址http://www.apache.org-------------
# tar zvxf httpd-2.2.3.tar.gz
# cd httpd-2.2.3
# ./configure --prefix=/usr/local/apache \
--enable-module=most \
--enable-shared=max
# make
# make install
----------------------------------启动Apache服务----------------------------------
# /usr/local/apache/bin/apachectl start
----------------------------------关闭Apache服务----------------------------------
# /usr/local/apache/bin/apachectl stop
----------------------------------重启Apache服务----------------------------------
# /usr/local/apache/bin/apachectl restart

4.安装PHP 5.1.6
-------------------下载软件包php-5.1.6.tar.gz,地址www.php.net--------------------
# tar zvxf php-5.1.6.tar.gz
# cd php-5.1.6
# ./configure --prefix=/usr/local/php \
--with-mysqld=/usr/local/mysql \
--with-apxs2=/usr/local/apache/bin/apxs
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

5.配置Apache服务的httpd.conf文件
*在LoadModule处添加 LoadModule php5_module module/libphp5.so
*在DirectoryIndex处添加 index.php
*在AddType application处添加
AddType application/x-httpd-php .php .phtml
AddType applicatoin/x-httpd-php-source .phps


下载下列文件至/usr/local/src/
apache(Unix平台最流行的WEB服务器平台)2.tar.gz
MySQL(和PHP搭配之最佳组合)-5.0.22.tar.gz
php(做为现在的主流开发语言)-5.1.2.tar.gz
解压缩:
#tar xvz(parallels的虚拟行平台)f apache(Unix平台最流行的WEB服务器平台)2.tar.gz
#tar xvz(parallels的虚拟行平台)f MySQL(和PHP搭配之最佳组合)-5.0.22.tar.gz
#tar xvz(parallels的虚拟行平台)f php(做为现在的主流开发语言)-5.1.2.tar.gz
 
#cd ..        //在/usr/local/目录下创建文件夹
# mkdir apache(Unix平台最流行的WEB服务器平台)
# mkdir MySQL(和PHP搭配之最佳组合)
# mkdir php(做为现在的主流开发语言)
 
//MySQL(和PHP搭配之最佳组合)安装过程
#cd ../MySQL(和PHP搭配之最佳组合)               //找到/usr/local/MySQL(和PHP搭配之最佳组合)文件夹
#groupadd MySQL(和PHP搭配之最佳组合)
#usseradd -g MySQL(和PHP搭配之最佳组合) MySQL(和PHP搭配之最佳组合)
 
#cd ../MySQL(和PHP搭配之最佳组合)-5.0.22       //找到/usr/local/src/MySQL(和PHP搭配之最佳组合)-5.0.22文件夹
#./configure --prefix=/usr/local/MySQL(和PHP搭配之最佳组合) --localstatedir=/var/lib/MySQL(和PHP搭配之最佳组合)/ --with-client-ldflags=-all-static --with-MySQL(和PHP搭配之最佳组合)d-ldflags=-all-static --with-MySQL(和PHP搭配之最佳组合)d-user=MySQL(和PHP搭配之最佳组合) --enable-assembler --with-extra-charsets=all
#make ; make install
 
/usr/local/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合)_install_db //初始化MySQL(和PHP搭配之最佳组合)
                     //对MySQL(和PHP搭配之最佳组合)进行配置
#chown –R root /usr/local/MySQL(和PHP搭配之最佳组合)
#chown –R MySQL(和PHP搭配之最佳组合) /var/lib/MySQL(和PHP搭配之最佳组合)/
#chgrp –R MySQL(和PHP搭配之最佳组合) /usr/local/MySQL(和PHP搭配之最佳组合)
#cp support-files/my-medium.cnf /etc/my.cnf
 
/usr/local/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合)d_safe –user=MySQL(和PHP搭配之最佳组合) &         //启动MySQL(和PHP搭配之最佳组合)
 
/usr/local/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合)admin –u root –p password 123     //将密码改为123
enter password:
              
              //测试一下新密码
/usr/local/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合) –u root –p MySQL(和PHP搭配之最佳组合)
enter password:                             //如果顺利的话就能进入MySQL(和PHP搭配之最佳组合)了.
      
                 
//apache(Unix平台最流行的WEB服务器平台)安装过程
./configure --prefix=/usr/local/apache(Unix平台最流行的WEB服务器平台) --enable-mods=shared=all --enable-module=so --disable-info
make
make install
 
apache(Unix平台最流行的WEB服务器平台)安装过程中,遇到libiconv.so.2的问题,解决方法如下:
ln –sf /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
 
//在窗口栏中敲入本机IP,如果出现着名的羽毛网页,就算成功了….
 
 
 
//php(做为现在的主流开发语言)安装过程
./configure --prefix=/usr/local/php(做为现在的主流开发语言) --with-MySQL(和PHP搭配之最佳组合)=/usr/local/MySQL(和PHP搭配之最佳组合) --with-apxs2=/usr/local/apache(Unix平台最流行的WEB服务器平台)/bin/apxs --enable-calendar --with-openssl=/usr/ --with-config-file-path=/usr/local/php(做为现在的主流开发语言)
make
make install
cp /usr/local/src/php(做为现在的主流开发语言)-5.1.2/php(做为现在的主流开发语言).ini-dist /usr/local/lib/php(做为现在的主流开发语言).ini
 
 
#cd usr/local/apache(Unix平台最流行的WEB服务器平台)/conf
//然后打开httpd.conf在相应的地方进行修改
AddType application/x-httpd-php(做为现在的主流开发语言) .php(做为现在的主流开发语言)
AddType application/x-httpd-php(做为现在的主流开发语言)-source .php(做为现在的主流开发语言)s
 
DocumentRoot "/usr/local/apache(Unix平台最流行的WEB服务器平台)/htdocs"
 
LoadModule php(做为现在的主流开发语言)5_module modules/libphp(做为现在的主流开发语言)5.so
 
//把测试的.php(做为现在的主流开发语言)文件放入/usr/local/apache(Unix平台最流行的WEB服务器平台)/htdocs/,在窗口栏中如能打开页面,则大功告成了
//常见问题1:ERROR 2002: Can't connect to local MySQL(和PHP搭配之最佳组合) server through socket '/var/lib/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).sock
  ' (2)
//解决方法: 权限问题
chown -R MySQL(和PHP搭配之最佳组合) /var/lib/MySQL(和PHP搭配之最佳组合)/
//常见问题2:Warning: MySQL(和PHP搭配之最佳组合) Connection Failed: Can't connect to local MySQL(和PHP搭配之最佳组合) server
// through socket '/tmp/MySQL(和PHP搭配之最佳组合).sock' (111) in /home/httpd/html/show.php(做为现在的主流开发语言) on line 9
//解决方法: 将/tmp/MySQL(和PHP搭配之最佳组合).sock link 到 /var/lib/MySQL(和PHP搭配之最佳组合) 目录里即可:
linux# ln -s /var/lib/MySQL(和PHP搭配之最佳组合)/MySQL(和PHP搭配之最佳组合).sock /tmp/MySQL(和PHP搭配之最佳组合).sock
 
/**********************************************************
清除指定目录内的文件
**********************************************************/
function clean_dir($path)        {
        if (!is_dir($path))        {
                if (is_file($path))        {
                        unlink($path);
                }
                return;
        }
        $p=opendir($path);
        while ($f=readdir($p))        {
                if ($f=="." || $f=="..") continue;
                clean_dir($path.$f);
        }
        rmdir($path);
        return;
}
/**********************************************************
删除指定目录下所有文件与子目录
**********************************************************/
function DeltreeDir($dir)  {
$dir = realpath($dir);
        if (!$dir || !@is_dir($dir))
                return 0;
        $handle = @opendir($dir);
        if ($dir[strlen($dir) - 1] != DIRECTORY_SEPARATOR)
                $dir .= DIRECTORY_SEPARATOR;
        while ($file = @readdir($handle))    {
                if ($file != '.' && $file != '..')         {
                        if (@is_dir($dir . $file) && !is_link($dir . $file))
                                DeltreeDir($dir . $file);
                        else
                                @unlink($dir . $file);
                }
        }
        closedir($handle);
        @rmdir($dir);
}
[!--infotagslink--]

相关文章

  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • photoshop画斜线/直线/虚线的入门级教程

    这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • 安卓开发之Intent传递Object与List教程

    下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
  • JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法

    这篇文章主要介绍了JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法,涉及JavaScript页面元素定时滚动操作及ajax调用实现技巧,需要的朋友可以参考下...2016-04-19
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • jQuery+ajax简单实现文件上传的方法

    这篇文章主要介绍了jQuery+ajax简单实现文件上传的方法,结合实例形式简单分析了jQuery基于ajax的post方法进行文件传输及asp.net后台处理技巧,需要的朋友可以参考下...2016-06-12
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • 如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
  • js实现ajax的用户简单登入功能

    这篇文章主要为大家详细介绍了js实现ajax的用户简单登入功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-19
  • jquery Ajax实现Select动态添加数据

    这篇文章主要为大家详细介绍了jquery Ajax实现Select动态添加数据的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-06-15
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • jquery+Ajax实现简单分页条效果

    这篇文章主要为大家详细介绍了jquery+Ajax实现简单分页条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-06-17
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 分享我对JS插件开发的一些感想和心得

    这篇文章主要给大家分享我对JS插件开发的一些感想和心得的相关资料,需要的朋友可以参考下...2016-02-09
  • jQuery UI结合Ajax创建可定制的Web界面

    这篇文章主要为大家详细介绍了jQuery UI结合Ajax创建可定制的Web界面,如何利用Ajax和jQuery UI创建具有各种定制功能的高度可定制的UI,感兴趣的小伙伴们可以参考一下...2016-06-24
  • Chrome插件开发系列一:弹窗终结者开发实战

    从这一节开始,我们将从零开始打造我们的chrome插件工具库,第一节我们将讲一下插件开发的基础知识并构建一个简单但却很实用的插件,在构建之前,我们先简单的了解一下插件以及插件开发的基础知识...2020-10-03
  • Bootstrap进度条与AJAX后端数据传递结合使用实例详解

    这篇文章主要介绍了Bootstrap进度条与AJAX后端数据传递结合使用,需要的朋友可以参考下...2017-04-27
  • jquery ajax局部加载方法详解(实现代码)

    下面想就为大家带来一篇jquery ajax局部加载方法详解(实现代码)。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-05-14