php ajax类,sajax.php在php中实现ajax技术的类

sajax.php在php中实现ajax技术的类

Ajax技术是最近一个比较热门的话题,有很多人追捧,也有人对此不屑,在此我就不多讲理论上的。仅谈谈我在php下用sajax.php进行ajax开发的经验

在制作之前,大家不放先到这里去下载一个ZIP包。

http://www.modernmethod.com/sajax/download.phtml

下载后,我们要用到其中的Sajax.php那个关键的文件。制作Ajax技术的PHP网页,我们要设计3个部分的内容。

1、PHP的函数

在下载的ZIP包中,大家应该可以看到那个乘法运算的例程。在此步骤中我们把要在PHP代码中处理的事情写在一个函数中。

PHP代码:

function multiply($x, $y) {

return $x * $y;

}

此函数很简单,大家都看得懂吧,就是做一个乘法运算而已。

2、HTML的Input

作为一个乘法运算,自然而然的要在页面中显示几个Input,让用户输入数字。因此,我们写出如下代码。

代码:

<input type=\"text\" name=\"x\" id=\"x\" value=\"2\" size=\"3\">*

<input type=\"text\" name=\"y\" id=\"y\" value=\"3\" size=\"3\">

=

<input type=\"text\" name=\"z\" id=\"z\" value=\"\" size=\"3\">

<input type=\"button\" name=\"check\" value=\"Calculate\"

οnclick=\"do_multiply(); return false;\">

由此可以看出,这里有3个text,一个x,一个y,作为运算的2个数组,z为乘法的积。为了保持和第1步中函数的参数变量保持一致,我们起了同样的x 和y的名字。z用来显示运算结果。然后在第4个button中我们调用了一个定义的函数do_multiply(),注意函数名与我们在第1步中的PHP 函数名有些类似,区别是在其名称前面加了一个“do_”前缀。

3、Javascript的函数

为了让第二步中Input输入的结果提交给第一步中的那个PHP函数,我们要写如下的Javascript代码,也就是第二步中出现的函数do_multiply()。

代码:

function do_multiply() {var x, y;

x = document.getElementById(\"x\").value;//获取X的值

y = document.getElementById(\"y\").value;//获取Y的值

x_multiply(x, y, do_multiply_cb);

}

在此函数中,我们可以看到函数在获取到Input输入的结果后执行了一个x_multiply()函数。此函数的参数应该和第一步中我们定义的PHP函数的参数保持一致,最后附加的do_multiply_cb为Ajax在调用了PHP的函数后要执行的Javascript函数,我们定义此函数名为 do_multiply_cb,并对此函数作如下的定义。

代码:

function do_multiply_cb(z) {document.getElementById(\"z\").value = z;

}

此函数有一个参数,返回值直接放入Z中,用以显示返回的结果。

至此,Ajax设计网页的三个关键步骤制作完毕,然后,我们用搭积木的方式把他们拼接在一起,就大功告成了!

<?

require(\"Sajax.php\");

[步骤1的PHP函数]

sajax_init();

sajax_export(\"multiply\");//声明需要用Ajax关联的函数

sajax_handle_client_request();

>

<script>

<?

sajax_show_javascript();

>

[步骤3的Javascript函数]

</script>

<body>

[步骤2的HTML代码]

</body>

上面这个例子是网上讲的比较多的一个sajax.php的例子,大家不妨试试这部分代码,可初步对ajax技术带来的技术好处有个理解。然而在实际进行大的开发中需要解决一些问题。

如上列,字符串传回到multiply()函数时,有中文的话,则是UCS-2格式,如果要想在do_multiply_cb()正确显示从multiply()中得到的中文字符串,则必须先把他转换成UTF-8格式。本老人曾在网上找了好多方法都没有能正确实现,最后自己用如下方法实现,如果有可以改进的地方请指教。

function   unescape($str)   {

$str=rawurldecode($str);

$ar = explode("%u",$str);

foreach($ar   as   $k=>$v)  {

if($k!=0){

if(strlen($v)==4)

$ar[$k]   =   iconv("UCS-2","UTF-8",pack("H4",substr($v,0,4)));

elseif(strlen($v)>4)

$ar[$k]   =   iconv("UCS-2","UTF-8",pack("H4",substr($v,0,4))).substr($v,4,strlen($v)-4);

}else{

if($v!="")

$ar[$k]   =   $v;

}

}

return   join("",$ar);

}

另外若想在multiply()函数中传递过来的字符串以简体中文格式插入到数据库中,则还需把原来转换得到的UTF-8格式的字符串再转换为GB2312,代码如下

function utfgb2($string) {

$out = iconv( "UTF-8" ,"GB2312",  $string);

return $out;

}

当然如果不需要在do_multiply_cb()正确显示从multiply()中得到的中文字符串,可以在unescape($str)函数中直接把"UCS-2"转换成"GB2312"格式,否则需要转换两次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值