原创文章如转载,请注明:转载自 xajax学习站
本文链接 : http://xajax.dayanmei.com/9.htm

使用了国外网友扩充的xajax类,实现了xajax无刷新上传,附xajax无刷新上传实例以及说明
先来看一下演示
http://xajax.dayanmei.com/demo/upload/admin/language.php

(点击create language,这个click是有点错误的,其实应该直接读取而不是显示或者隐藏层,或者你有好的解决办法)

主要的xajax结合php上传文件和保存数据的函数集中存放在 ./admin/includes/function.xajax.php 里面
在language.php文件载入并初始化xajax上传扩展
require_once(ROOT_PATH '/includes/xajax/xajax.inc.php');

require_once(
ROOT_PATH '/admin/includes/function.xajax.php');

require_once(
ROOT_PATH '/includes/xajax/xajaxExtend.php');

//$xajax = new xajax();

$xajax = new xajaxExtend;

//$xajax->debugOn();

$xajax->registerFunction("ShowCreateLanguage");

$xajax->registerFunction("CreateLanguage");

$xajax->registerFunction("DeleteLanguage");

$xajax->registerFunction("ModifyLanguage");

$xajax->registerFunction("UpdateLanguage");

$xajax->processRequests();


主要处理上传函数
<?php

//显示添加语言表单

function ShowCreateLanguage($hidden 1) {

     
$objResponse = new XajaxResponse();

     if(
$hidden == 1){

          
$objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(2);return false\" title=\"\">create language</a>");

          
$objResponse->addAssign('h','style.display','block');

          }else{

          
$objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(1);return false\" title=\"\">create language</a>");

          
$objResponse->addAssign('h','style.display','none');

          }

     return 
$objResponse;

}



function 
CreateLanguage($f1) {

     global 
$db,$tablefix,$LANG;

     
$objResponse = new xajaxResponse();

     
$name xml_escape($f1['name']);

     
$charset xml_escape($f1['charset']);

     
$ord xml_escape($f1['ord']);

     
$ord = (($ord == '') OR !is_numeric($ord)) ? '1' $ord;



     if(empty(
$name)){

          
$objResponse->addAlert("Language name is empty");

          }



     if(empty(
$charset)){

          
$objResponse->addAlert("charset is empty");

          }

     

     if(!empty(
$name) AND !empty($charset)){

          
//判断是否有上传文件

          
if($_FILES['filename']['tmp_name'] <>""){

               require_once(
ROOT_PATH '/includes/class.upload.php');

               

               
$fileFormat = array('gif','jpg','jpge','png');

               
$upload =     new UploadROOT_PATH '/attaches/'$fileFormat);

               if(!
$upload->run('filename')){

                    
$objResponse->addAlert("upload image file false");

               }else{

               
//如果成功上传则添加进数据库

               
$filename $upload->returnArray[0][saveName];

               
$insertsql "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','$filename','$charset','$ord')";

               if(
$db->query($insertsql)){

                    
//如果添加成功

                    
$languageid $db->insertid();

                    
$innerHTML = <<<EOT

    <ul id="page_" class="two">

    <li>
$languageid</li>

    <li>
$name</li>

    <li><img src="../attaches/" width="21" /></li>

    <li>
$charset</li>

    <li>
$ord</li>

    <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage(
$languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

    </ul>

EOT;

                    
$objResponse->addAppend("language","innerHTML",$innerHTML);

                    }

               }

               
//如果没有文件上传

               
}else{

               
$insertsql "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','','$charset','$ord')";

               if(
$db->query($insertsql)){

                    
//如果添加成功

                    
$languageid $db->insertid();

                    
$innerHTML = <<<EOT

    <ul id="page_" class="two">

    <li>
$languageid</li>

    <li>
$name</li>

    <li>&nbsp;</li>

    <li>
$charset</li>

    <li>
$ord</li>

    <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage(
$languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

    </ul>

EOT;

                    
$objResponse->addAppend("language","innerHTML",$innerHTML);

                    }

               }

               
//清空表单

               
$objResponse->addClear('name','value');

               
$objResponse->addClear('filename','value');

               
$objResponse->addClear('charset','value');

               
$objResponse->addClear('ord','value');

               
$objResponse->addAssign("h","style.display","none");

          }

     

     return 
$objResponse;

}



//此函数未完全

function DeleteLanguage($languageid) {

     global 
$db,$tablefix;

     
$languageid xml_escape($languageid);

     
$objResponse = new XajaxResponse();

     if(!
is_numeric($languageid)){

          
$objResponse->addAlert("language id is empty");

          }else{

          
//取得filename,并删除图片

          
$result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid'");

          
$r $db->fetch_array($result);

          @
unlink('../attaches/'.$r['filename']);

          

          if(
$db->query("DELETE FROM `language` WHERE `languageid` = '$languageid' LIMIT 1")){

               
//执行删除 应该还要删除与语言相关的东西

               //$objResponse->addAlert("success delete a session");

               
$objResponse->addRemove("page_".$languageid);

               }else{

               
$objResponse->addAlert("failed to delete a session");

               }

          }



     return 
$objResponse;

}



function 
ModifyLanguage($languageid) {

     global 
$db,$tablefix,$LANG;

     
$languageid xml_escape($languageid);

     
$objResponse = new XajaxResponse();

     if(!
is_numeric($languageid)){

          
$objResponse->addAlert("Language id error");

          }else{

          
$result $db->query("SELECT * FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");

          
$language $db->fetch_array($result);



          if(
count($language)>0){

               if(
$language['filename'] != ''){

                    
$image "<img src=\"../attaches/\" width=\"21\">";

                    }else{

                    
$image '';

                    }

               
$innerHTML = <<<EOT

<div id="midifyinput" style="margin:0 auto;padding:0;width:760px;">

<form id="f2" name="f2" onsubmit="return updateForm();" method="post" enctype="multipart/form-data">

<input type="hidden" name="languageid" value="" />

<table id="addlanguage" class="th">

    <th>Language Name</th>

    <th>Icon(21px * 14px)</th>

    <th>Charset</th>

    <th>Order</th>

    <th width="150">Control</th>

     <tr>

    <td><input type="text" name="name" id="name" value="" /></td>

    <td>
$image<input type="file" name="filename" /></td>

    <td><input type="text" name="charset" id="charset" value="" /></td>

    <td><input type="text" name="ord" id="ord" value="" /></td>

    <td><input type="submit" class="button1" name="" value="
$LANG[add]" /></td>

    </tr>

    </table>

    </form>

    </div>

EOT;

               
$objResponse->addAssign("h","style.display",'');

               
$objResponse->addAssign("h","innerHTML",$innerHTML);

               }else{

               
$objResponse->addAlert("Language is not installed");

               }

          }

     return 
$objResponse;

}



function 
UpdateLanguage($f2) {

     global 
$db,$tablefix,$LANG;

     
$objResponse = new xajaxResponse();

     
$name xml_escape($f2['name']);

     
$charset xml_escape($f2['charset']);

     
$languageid xml_escape($f2['languageid']);

     
$ord xml_escape($f2['ord']);

     
$ord = (($ord == '') OR !is_numeric($ord)) ? '1' $ord;



     if(empty(
$name)){

          
$objResponse->addAlert("Language name is empty");

          }



     if(empty(
$charset)){

          
//$objResponse->addAlert("charset is empty");

          
}

     

     if(!empty(
$name) AND !empty($charset)){

          
//判断是否有上传文件



          
if($_FILES['filename']['tmp_name'] != ""){

               require_once(
ROOT_PATH '/includes/class.upload.php');

               

               
$fileFormat = array('gif','jpg','jpge','png');

               
$upload =     new UploadROOT_PATH '/attaches/'$fileFormat);

               if(!
$upload->run('filename')){

                    
$objResponse->addAlert("upload image file false");

               }else{

               
//如果成功上传则添加进数据库

               
$filename $upload->returnArray[0][saveName];

               
//获取原来的图片路径并删除

               
$result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");

               
$image $db->fetch_array($result);

               if(
count($image)>0){

                    @
unlink('../attaches/'.$image['filename']);

                    }

               

               
//更新数据库

               
$updatesql "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord',`filename` = '$filename' WHERE `languageid` = '$languageid' LIMIT 1";

               if(
$db->query($updatesql)){

                    
//如果添加成功

                    
$RooPath ROOT_PATH;

                    
$innerHTML = <<<EOT

    <li>
$languageid</li>

    <li>
$name</li>

    <li><img src="../attaches/" width="21" /></li>

    <li>
$charset</li>

    <li>
$ord</li>

    <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage(
$languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

EOT;

                    
$objResponse->addAssign("page_","innerHTML",$innerHTML);

                    

                    }

               }

               
//如果没有文件上传

               
}else{

               
//更新数据库

               
$updatesql "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord' WHERE `languageid` = '$languageid' LIMIT 1";

               if(
$db->query($updatesql)){

                    
//如果添加成功

                    
$result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");

                    
$image $db->fetch_array($result);

                    if(
count($image)>0){

                         
$filename $image['filename'];

                         }

                    
$innerHTML = <<<EOT

    <li>
$languageid</li>

    <li>
$name</li>

    <li><img src="../attaches/" width="21" /></li>

    <li>
$charset</li>

    <li>
$ord</li>

    <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage(
$languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

EOT;

                    
$objResponse->addAssign("page_","innerHTML",$innerHTML);

                    }

               }

               
//隐藏表单

               
$objResponse->addAssign("h","style.display","none");

          }



     return 
$objResponse;

}

?>


在调用扩展上传,其中CreateLanguage是php中处理上传的函数 f1是表单的id
<script language="Javascript">
    function checkForm() {
        return xajax.upload('CreateLanguage','f1');
    }

    function updateForm() {
        return xajax.upload('UpdateLanguage','f2');
    }
</script>

xajax无刷新上传文件实例(示例) 完整源码下载
http://xajax.dayanmei.com/download/upload.rar

上一篇:如何安装xajax 下一篇:xajax获取表单值获取输入框值

时间:2007-10-20 | 分类:xajax例子 评论:阅读:7146
标签:xajax无刷新上传,xajax上传文件

发表评论

好多网友都好踊跃,这是好的,但请不要发表无意义的评论,谢谢

最新文章 订阅xajax站最新文章

最新评论

热门文章