今天把以前的项目动了点小手术
结果发现2个问题
一个是TinyMCE和jquery.blockUI一起用,firefox下是disabled状态….
目前没有解决办法
另外一个问题是使用ajaxForm时
POST中取不到textarea的值
查了下API
使用
tinyMCE.get(‘textarea的id’).getContent()就可以了
看到网上有网友问,顺便就写下来了
这样ajax提交可以这样
1
2
3
4
5
6
7
8
| $('#form_addseriesSeries').submit(function(){
$(this).ajaxSubmit({
success:response,
data:{description:tinyMCE.get('inputbox').getContent()}
});
$.unblockUI();
return false;
}); |
OK~收工
这几天迷上了JSON,连项目中一些XML的工作都交给了JSON
话说JSON真的比XML方便的多啊…
但是有个问题
虽然JS解码JSON非常方便,但是编码似乎没有什么好办法…
本着能懒即懒,不能懒也尽量懒的原则,古狗了一下
还真让我发现了
PHP里直接用json_decode就可以解码,用起来相当方便
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| function json_encode_js(aaa){
function je(str){
var a=[],i=0;
var pcs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (;i<str.length;i++){
if(pcs.indexOf(str[i]) == -1)
a[i]="\\u"+("0000"+str.charCodeAt(i).toString(16)).slice(-4);
else
a[i]=str[i];
}
return a.join("");
}
var i,s,a,aa=[];
if(typeof(aaa)!="object") {alert("ERROR json");return;}
for(i in aaa){
s=aaa[i];
a='"'+je(i)+'":';
if(typeof(s)=='object'){
a+=json_encode_js(s);
}else{
if(typeof(s)=='string')
a+='"'+je(s)+'"';
else if(typeof(s)=='number')
a+=s;
}
aa[aa.length]=a;
}
return "{"+aa.join(",")+"}";
} |
话说,看着aaa的变量名有点不爽,我给改掉了...
同样有不爽的...自己改去,我是不会提供的..o(∩_∩)o 哈哈
因为手头正在做一个影楼的网站,所以不可避免的用到了图片上传。
我这个人很懒,也很会懒…
以前.net项目,都把常用的功能做成控件…
可惜这个项目是php的…不能继续懒的,网上搜了搜,没有特别满意的,本来看到Jquery有个上传的很不错,不过自己看了下
和swfupload也没什么区别,而且还没swfupload好用
算了,再写个php的“控件”吧….以后继续懒…..
纯swfupload实现….简单进行了下修改,做了下简单汉化,看几张效果图

点击我阅读全文 »
其实很早就想写这么篇文章了,只不过一直很懒再者觉得自己对线程的理解还不够深刻
写出来怕真正的高手笑话。
今天朋友遇到了这个问题,考虑下,还是写出来吧。
错误详细信息应该为:
线程间操作无效: 从不是创建控件“XXX”的线程访问它。
问题看起来其实很简单,解决起来其实也很简单…
就我知道的有三种方法。
在说解决方案前,先了解点相关信息。
引用MSDN上而定话:访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。
而我们出现这个错误时,应该都在做这个操作…
点击我阅读全文 »
不得不说,这是一个非常好用的参数。
不过在很多初级教材中我并没有看到它的身影
MSDN给出的介绍是
params 关键字可以指定在参数数目可变处采用参数的方法参数。
这么说可能很多人不理解
没有关系
看个例子就知道了
先看下MSDN的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| // cs_params.cs
using System;
public class MyClass
{
public static void UseParams(params int[] list)
{
for (int i = 0 ; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}
public static void UseParams2(params object[] list)
{
for (int i = 0 ; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}
static void Main()
{
UseParams(1, 2, 3);
UseParams2(1, 'a', "test");
// An array of objects can also be passed, as long as
// the array type matches the method being called.
int[] myarray = new int[3] {10,11,12};
UseParams(myarray);
}
} |
上面的代码运行后将会输出
1
2
3
1
a
test
10
11
12
或许大家觉得没什么用
那么举个常用的例子
我们要做删除和批量产出功能
那么会产生Delete(int id)和Delete(int[] ids)这两个方法
但是有了params就大可不必
只要一个Delete(params int[] ids)
就可以了
调用时
删一个就Delete(id)
多个就Delete(ids)
是不是很方便