Submitted by aming on 2008, March 7, 9:05 AM
代码分为以下部分:
demo.php - 上传过程处理
PLAIN TEXTPHP:
<?php
include 'UploadProgressMeter.class.php';
fileWidget = new UploadProgressMeter();
if (fileWidget->uploadComplete()) {
// 上传完毕的时候,从iframe发送一个js到主窗口表示一切ok
echo fileWidget->finalStatus();
// 处理上传后的文件...
exit;
}
?>
demoserver.php - Ajax的服务端js,使用Pear:HTML_AJAX,直接调用UploadProgressMeterStatus类
PLAIN TEXTHTML:
<script src="http://www.ooso.net/demoserver.php?client=main,request,httpclient,dispatcher,json,util" type="text/javascript"></script>
<script src="http://www.ooso.net/demoserver.php?stub=UploadProgressMeterStatus" type="text/javascript"></script>
<?php echo fileWidget->renderIncludeJs(); ?>
进度条的样式表
PLAIN TEXTCSS:
.progressBar {
position: relative;
padding: 2px;
width: 300px;
height: 40px;
font-size: 14px;
}
.progressBar .background {
border: solid 1px black;
width: 270px;
height: 20px;
}
.progressBar .bar {
position: relative;
background-color: blue;
width: 0px;
height: 20px;
}
表单部分
PLAIN TEXTHTML:
<form action="demo.php" method="post" enctype="multipart/form-data">renderFormExtra(); ?>>
<?php echo fileWidget->renderHidden(); ?></form><form action="demo.php" method="post" enctype="multipart/form-data"><label>Select File: </label>
<div><?php echo fileWidget->render(); ?>
<?php echo fileWidget->renderProgressBar(); ?></div>
</form>
demo下载 - 密码是www.ooso.net
作者的svn浏览
其它类似项目:
http://pdoru.from.ro/ - 要以patch的形式和php一起编译
http://www.ugia.cn/?p=54 - 以socket上传文件并显示进度条
Tags: ajax, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:306
Submitted by aming on 2008, March 7, 9:04 AM
异步的文件上传是在现代的AJAX实现的Web应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XmlHttpRequest)无法实现传输文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传功能。在这个功能当中需要使用到内置的框及(IFRAME)来传输文件。这个功能实现的效果是页面在上传文件的时候,用户还可以使用该页面并且填写文件描述。
» 阅读全文
Tags: ajax, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:163
Submitted by aming on 2008, March 6, 11:41 AM
<html>
<head>
<scrīpt language="javascrīpt">
function postRequest(strURL){
var xmlHttp;
if(window.XMLHttpRequest){ // For Mozilla, Safari, ...
var xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){ // For Internet Explorer
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open('POST', strURL, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4){
updatepage(xmlHttp.responseText);
}
}
xmlHttp.send(strURL);
}
function updatepage(str){
if(str=="yes"){
alert("Welcome User");
}else{
alert("Invalid Login! Please try again!");
}
}
function call_login(){
var username = window.document.f1.username.value;
var password = window.document.f1.password.value;
var url = "login.php?username=" + username + "&password=" +password ;
postRequest(url);
}
</scrīpt>
</head>
<body>
<Center>
<form name="f1" ōnSubmit="return call_login();">
<table border="0" bgcolor="#CCCCCC" cellspacing="1" cellpadding="3" width="316">
<tr>
<td align="left" colspan="2"><b><font size="5" color="#000080">Login</font></b></td>
</tr>
<tr>
<td align="right" width="124"><b><font color="#000080">User
Name:</font></b></td>
<td width="177"><input type="text" name="username" id="user" size="20" value="" /></td>
</tr>
<tr>
<td align="right" width="124"><b><font color="#000080">Password:</font></b></td>
<td width="177"><input type="password" name="password" size="20" value="" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" name="a1" value="Login" ōnClick="call_login()"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
PHP脚本部分login.php:
<?
$username=$_GET["username"];
$password=$_GET["password"];
if($username=="admin" && $password=="admin"){
echo "yes";
}else{
echo "No";
}
?>
Tags: ajax, 教程
AJAX | 评论:0
| Trackbacks:0
| 阅读:231
Submitted by aming on 2008, March 6, 11:36 AM
实话实说,创建一个聊天的程序不是一个很艰难的程序!
写这篇文章的目的是教你一步一步地用XML作为传输载体来创建一个轻量级的聊天程序。这是一个很有趣的应用,而我写这篇文章的动机也是来自于我平时很喜欢PHP。同时,通过业余时间的钻研,我发现通过Web提供了一个稳定的论坛以后,人们往往希望通过Web能够时间即时的聊天室。这是因为虽然IRC和其它的一些即时的聊天工具已经很普及了,但是许多的用户仍然喜欢基于Web的聊天方式。原因有许多,比如这些基于Web的聊天工具可以通过一些合作的代理与那些即时聊天工具联系起来,或者Web的聊天工具使用很方便。
本文讨论的聊天程序的源代码你可以通过这两个链接进行下载:chat.tar.gz / chat.zip。源代码在本文中基本上都讨论到了(除了一些随后附加的补丁)。
为了创建这个聊天程序,我决定采用标准的第三方的库。因为我觉得既然这些第三方的库已经很好地解决了问题,我就没有必要自己来重新编写。可能有些人会认为使用这些库我们的程序就不是原创的,但是我们不必去理会这种没有意义的争论。
在服务器端,我决定采用Zend Framework 0.20 (发布于2006年10月31号)。客户端那边,通过采用原型的库,我们可以简化AJAX和Javascript的处理。其它的资源我决定使用Scriptaculous。当然,你可以使用其它的如jQuery, Dojo or 或者其它类似的库来实现。
这次我们编写的聊天工具主要基于Zend Framework (PHP5),Javascript和协议库实现,目的是创建一个简单的便捷的聊天程序。另外,我们提供的源代码使用的是新的BSD的许可证,读者可以根据自己的需要自由地修改它。其它的细节我们就不讨论了,我们开始吧!
» 阅读全文
Tags: ajax, 教程
AJAX | 评论:0
| Trackbacks:0
| 阅读:232
Submitted by aming on 2008, March 6, 11:34 AM
多年以来,创建真正具有响应性的 Web 应用程序这一目标一直被 Web 开发的一个简单事实所阻碍:要改变页面某一部分的信息,用户就必须重载整个页面。但是以后不再会这样了。感谢异步 Javascript 脚本和 XML(Ajax),我们现在可以从服务器端请求新内容,只修改页面的一部分。这个教程解释了如何把 Ajax 用于 PHP ,并介绍了简单 Ajax 工具包(Sajax),这是一个用 PHP 编写的工具,可以把服务器端 PHP 与 JavaScript 集成。
» 阅读全文
Tags: ajax, javascript
AJAX | 评论:0
| Trackbacks:0
| 阅读:231
Submitted by aming on 2008, March 6, 11:31 AM
想象使用一个简单HTML文件来把一个请求发送到一个服务器端脚本,收到一个基于该请求的定制XML文件,然后把它显示给用户而几乎不需要刷新浏览器!本文作者将同你一起探讨怎样在普通Web应用程序中联合javascript:;" onClick="javascript:tagshow(event, 'PHP');" target="_self">PHP和AJAX技术来创建实时的数据传输而不需要进行浏览器刷新。
尽管本文所使用的是PHP语言,但是请记住任何服务器端语言都会正常工作。为了理解本文,我假定你基本理解JavaScript和PHP或一类似服务器端语言。
» 阅读全文
Tags: ajax, rss
AJAX | 评论:0
| Trackbacks:0
| 阅读:246
Submitted by aming on 2008, March 6, 10:55 AM
在使用浏览器浏览网页的时候,当页面刷新很慢的时候,你的浏览器在干什么?你的屏幕内容是什么?是的,你的浏览器在等待刷新,而你的屏幕内容是一片空白,而你在屏幕前苦苦的等待浏览器的响应。开发人员为了克服这种尴尬的局面,不得不在每一个可能需要长时间等待响应的页面上增加一个DIV,告诉用户“系统正在处理您的请求,请稍候……”。
现在,有一种越来越流行越热的“老”技术,可以彻底改变这种窘迫的局面。那就是AJAX。如今,随着Gmail、Google-maps的应用和各种浏览器的支持,AJAX正逐渐吸引全世界的眼球。
» 阅读全文
Tags: ajax, 教程
AJAX | 评论:0
| Trackbacks:0
| 阅读:268
Submitted by aming on 2008, March 6, 9:18 AM
/**
* 版权: 石太祥 [ E.Alpha ] 所有 ;
*
* email: ealpha(AT)msn(DOT)com ;
* msn: ealpha(AT)msn(DOT)com ;
* QQ : 9690501
*
* 所有转载请注明本信息!
*/
----------------------------------------------------------------
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getEPnum]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getEPnum]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrcount]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getstrcount]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrofindex]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getstrofindex]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
--- 这个函数直接调用了另外的两个函数,可以先阅读下面提到的两个函数
CREATE function getEPnum (@str varchar(8000))
returns varchar(8000)
as
begin
declare @str_return varchar(8000)
declare @i int
declare @temp_i int
declare @onlineornot int
declare @findepnumok int
-- 用来取得一个epnum,
-- 规则:首先从chatid中取,如果有在线得,则取得最前面得在线得返回
-- 如果全部不在线,则返回 ‘00000000’
select @findepnumok = 0
select @temp_i = 0
IF len(@str)<=0
begin
SELECT @str_return = '00000000'
end
else
begin
select @i = dbo.getstrcount(@str,',')
WHILE @temp_i<@i
BEGIN
select @onlineornot = online from wwchat_user where epnum=dbo.getstrofindex(@str,',',@temp_i)
IF (@onlineornot=1)
begin
select @str_return =dbo.getstrofindex(@str,',',@temp_i)
select @findepnumok = 1 --找到epnum后置为1
BREAK
end
ELSE
begin
select @temp_i = @temp_i + 1
select @findepnumok = 0 --找不到epnum后置为1
end
END
if @findepnumok = 0
begin
SELECT @str_return = '00000000'
end
end
return @str_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- getstrcount 输入一个没有分割的字符串,以及分割符
--返回数组的个数
CREATE function getstrcount (@str varchar(8000),@splitstr varchar(100))
--returns varchar(8000)
returns int
as
begin
declare @int_return int
declare @start int
declare @next int
declare @location int
select @next = 0
select @location = 1
if len(@str)<len(@splitstr)
select @int_return =0
if charindex(@splitstr,@str) = 0
select @int_return =0
while (@location<>0)
begin
select @start = @location + 1
select @location = charindex(@splitstr,@str,@start)
select @next = @next + 1
select @int_return = @next
end
return @int_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- getstrofindex 输入一个未分割的字符串,舒服分割符号,舒服要取得的字符位置
-- 返回 制定位置的字符串
CREATE function getstrofindex (@str varchar(8000),@splitstr varchar(4),@index int=0)
returns varchar(8000)
as
begin
declare @str_return varchar(8000)
declare @start int
declare @next int
declare @location int
select @start =1
select @next = 1 --如果习惯从0开始则select @next =0
select @location = charindex(@splitstr,@str,@start)
while (@location <>0 and @index > @next )
begin
select @start = @location +1
select @location = charindex(@splitstr,@str,@start)
select @next =@next +1
end
if @location =0 select @location =len(@str)+1 --如果是因为没有逗号退出,则认为逗号在字符串后
select @str_return = substring(@str,@start,@location -@start) --@start肯定是逗号之后的位置或者就是初始值1
if (@index <> @next ) select @str_return = '' --如果二者不相等,则是因为逗号太少,或者@index小于@next的初始值1。
return @str_return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Tags: mysql
MYSQL | 评论:0
| Trackbacks:0
| 阅读:193