最近几个关于js的笔记

第一,重温一下数据的json传输手法,最简单的php json转js对象方法:

//php的array('a'=>1,b=>'2')转换输出"{a:1,b:2}"的json字符,以下方法转为js对象
eval('var result = '+returnData+';');//等同于:var result={a:1,b:2}
//然后可以通过以下方法遍历js对象
for(var v in result){
   /*这是递归alert出属性值*/   
   alert(result[v]);
}

第二,研究了一下swfupload(官方下载)这个swf+js的上传组件:

先明确一下原理:

实际上整个原理很简单,单一过程:选择一个文件,然后上传,然后通过响应handle.js里面定义的事件来后续操作。对于多个文件的上传实际上就是重复这个单一过程,handle.js里面定义的每个响应事件都是针对一个文件的上传过程。

再说一下跟php的交互:

a.js端操作,在SWFUload对象初始化时,可以指定给后台php传递的参数,留意注释部分

var settings = {
	flash_url : "swfupload/swfupload.swf",
	flash9_url : "swfupload/swfupload_fp9.swf",
	upload_url: "<?=url('Front','Upload')?>",
	file_post_name : "postFile",//把上传的文件对象传递给php,在php中将以$_FILES['postFile']接收这个对象
	post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"},//可额外给php传递参数,这里用的是post的方式,因此php端可以用$_POST['PHPSESSID']来接收
	file_size_limit : "100 MB",
	file_types : "*.jpg;*.png;*.gif",
	file_types_description : "All Files",
	file_upload_limit : 100,
	file_queue_limit : 0,
	custom_settings : {
		progressTarget : "fsUploadProgress",
		cancelButtonId : "btnCancel",
		uploadButtonId : "btnUpload",
	},
	debug: true,
	auto_upload:false,
 
	// Button settings
	button_image_url: "img/bg_btn_upload.png",
	button_width: "93",
	button_height: "35",
	button_placeholder_id: "spanButtonPlaceHolder",
	button_text: '',
	button_text_style: "",
 
	// The event handler functions are defined in handlers.js
	swfupload_preload_handler : preLoad,
	swfupload_load_failed_handler : loadFailed,
	file_queued_handler : fileQueued,
	file_queue_error_handler : fileQueueError,
	file_dialog_complete_handler : fileDialogComplete,
	upload_start_handler : uploadStart,
	upload_progress_handler : uploadProgress,
	upload_error_handler : uploadError,
	upload_success_handler : uploadSuccess,
	upload_complete_handler : uploadComplete,
	queue_complete_handler : queueComplete	// Queue plugin event
};
 
swfu = new SWFUpload(settings);

b.php端操作,代码:

$file=$_FILE['postFile'];
$return=array();//定义数组
....//文件移动操作、$return赋值
echo json_encode($return);//转为json对象,输出到页面,这样swf可以读取它

3 Responses to 最近几个关于js的笔记 »

  1. 丕子 评论 2010-10-15 17:40

    哦 上传文件的

    回复

  2. 暖洋洋 评论 2010-11-07 10:09

    这样才好嘛

    回复

  3. 最近几个关于js的笔记 Pingback 2011-05-24 12:15

    [...] var settings = { flash_url : "swfupload/swfupload.swf", flash9_url : "swfupload/swfupload_fp9.swf", upload_url: "<?=url(‘Front’,'Upload’)?>", file_post_name : "postFile",//把上传的文件对象传递给php,在php中将以$_FILES['postFile']接收这个对象 post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"},//可额外给php传递参数,这里用的是post的方式,因此php端可以用$_POST['PHPSESSID']来接收 file_size_limit : "100 MB", file_types : "*.jpg;*.png;*.gif", file_types_description : "All Files", file_upload_limit : 100, file_queue_limit : 0, custom_settings : { progressTarget : "fsUploadProgress", cancelButtonId : "btnCancel", uploadButtonId [...] View full post on 写笔记的小JOE页 [...]

Leave a Reply

Email address is not published

You should say a Chinese word to pass spam check. If you can not input Chinese, just copy 你好 and paste them into comment text box.