HttpWebRequest 417错误不可怕
作者:yaya | 时间:2009年12月2日 | 分类 学海无涯 | 标签 417错误 HttpWebRequest | 1回复
417错误不可怕!可怕的是guoguo那家伙非要想去post一个get的东东!!!弄了半天才发现~~简直晕了!
417错误:服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下
一级服务器不能满足请求
如果要post数据的话加上System.Net.ServicePointManager.Expect100Continue = false就可以了。
这是因为HttpWebRequest会先去查询url是否存在而不会去post数据,证实以后再post数据。而一些apache不能接受,认为出错。而这都是expect头字段指定引起的。就是说HttpWebRequest默认设置Expect:100-continue(http1.1才有的属性)。只有设置为false就可以了。
鄙视guoguo中!
一些好玩的片段
作者:yaya | 时间:2009年11月30日 | 分类 学海无涯 | 标签 作用域 var | 2回复
今天写个小玩意,涉及到了以下的一些东西。猜猜下面各个程序片段运行弹出a的对话框是多少呢?
-
var a;
-
for (var i=0;i<2;i++)
-
{
-
if (i==0)
-
{
-
a=100;
-
}
-
else
-
{
-
alert(a);
-
}
-
}
-
for (var i=0;i<2;i++)
-
{
-
if (i==0)
-
{
-
a=100;
-
}
-
else
-
{
-
alert(a);
-
var a = i;
-
}
-
}
-
for (var i=0;i<2;i++)
-
{
-
if (i==0)
-
{
-
a=100;
-
}
-
else
-
{
-
alert(a);
-
}
-
var a = i;
-
}
-
for (var i=0;i<2;i++)
-
{
-
if (i==0)
-
{
-
a=100;
-
}
-
else
-
{
-
var a = i;
-
alert(a);
-
}
-
}
-
for (var i=0;i<2;i++)
-
{
-
var a;
-
if (i==0)
-
{
-
a=100;
-
}
-
else
-
{
-
alert(a);
-
}
-
}
其实只要知道了以下即可:
1.由于只有函数定义才会产生新的作用域(当然程序本来就会产生),而块级元素是不会产生的,所以for block自然也不会产生新的作用域。所以就以上代码而言,在for循环里面写var a亦等于写在for循环外,都相当于被定义为全局变量,即添加为global对象成员,对于浏览器宿主而言,就是window对象。
2.变量的声明查找会从其作用域开始进行查找,若没有找到就到上级作用域查找。就是说会从当前的函数块开始查找,找不到就上上级的函数块,找到了最上层还找不到就会报错。这里需要说明的是,如果某个作用域的环境的所有者有prototype属性,则会沿着prototype链去查找下去。
3.变量创建时候就被设置为了undefined,所以未赋值时候为undefined,而未申明则会报错。
4.而至于var的位置可变性,则是javascript进行预编译的结果。也就是说会先分配给内存空间给它,但是呢,并没有赋值,这个时候变量已经创建了。而赋值的操作则是在解释执行的时候了。
通过以上的几点,我们可以很容易得得出,以上几个程序片段的运行结果分别为:100,100,0,1,100
OK。写完收工。
google client动画
作者:yaya | 时间:2009年11月23日 | 分类 学海无涯 | 标签 google | 0回复
g.cn搜索页面的后面加上&client=value
当value值为
aff-5566, aff-9991, pub-4273724667394431, pub-2215799605516001, pub-0194889602661524, pub-1309797784693300, pub-7908916078457618, pub-0194889602661524, pub-6779645896534375, pub-2565527930429163, pub-8406103100425592, pub-4895116691449379, pub-2190841356460864, pub-1023602766778897
之一时候出现g.cn的大logo动画效果

http://www.google.cn/intl/ALL_cn/images/google-png8-canvas-3.png
发现居中是left50%加负margin-left,想起笔试的题目来了。
通用js cookie表单填充
作者:yaya | 时间:2009年10月9日 | 分类 学海无涯 | 标签 javascript cookie form 勿忘我 | 3回复
今天发现出了点问题,废置已久的东东再一次次更新中早就忘记了原先的面貌是什么。反正也无所谓,就不管了。
现在从新写个js 的cooies 表单记录填充。
只需在
inputs: ["comment_author", "comment_email", "comment_website"], flag: "comment_remember", form: "commentform"
填写对应的input ID,flag(表示是否记录checkbox),form ID 即可。
而在checkbox我取名为"勿忘我"。唯它最能表示这种感情。(千万不要骂我闷骚!)

代码如下:
-
(function(F) {
-
var inputs = F.inputs || [];
-
if (inputs.length === 0) return;
-
var flag = F.flag || true;
-
var form = F.form;
-
var newfriend = false;
-
var that = this;
-
that.expD = 31536000000; //一年
-
that.cookieName = "ULOVEITINFO";
-
var autoFinish = function() {
-
var value = eval('/' + cookieName + '=([.]*[^;]*)/.exec(document.cookie)||"NEWFRIEND"');
-
if (value != "NEWFRIEND")
-
if (inputs.length === value[1].split(",").length)
-
for (var i = 0; i < inputs.length; i++) document.getElementById(inputs[i]).value = value[1].split(",")[i] || "";
-
} ();
-
var remember = function() {
-
if (document.getElementById(flag).checked) {
-
var expDate = new Date();
-
expDate.setTime(expDate.getTime() + this.expD);
-
var key = "";
-
for (var i = 0; i < inputs.length - 1; i++)
-
key += document.getElementById(inputs[i]).value + ',';
-
key += document.getElementById(inputs[i]).value + ';';
-
document.cookie = cookieName + "=" + key + "expires=" + expDate.toGMTString();
-
}
-
}
-
document.getElementById(form).onsubmit = remember;
-
})({
-
inputs: ["comment_author", "comment_email", "comment_website"], flag: "comment_remember", form: "commentform"
-
});
ps:很多地方说的过期设置用expire是不对的。expires才对。
JavaScript 多维数组类
作者:yaya | 时间:2009年10月7日 | 分类 学海无涯 | 标签 javascript 数组 类 | 0回复
我们知道javascript 的多维数组是通过模拟实现的,比如二维数组a[3][2]的实现:
-
var a = new Array(3)
-
a[0] = new Array(2);
-
a[1] = new Array(2);
-
a[2] = new Array(2);
当然,写出 [ ] 的形式也是一样的意思。
而写成var a = new Array(3,2)是不行的。
可以我们总想事情变得简单。所以写了MyArray。如下:
-
var MyArray = function(){
-
var args = arguments;
-
this.array={
-
toArray:function(){
-
var tempArray;
-
var d= args.length-1;
-
var ts='';
-
tempArray=new Array(args[0]);
-
var vtemp = new Array(d);
-
for (var f=0;f<d;f++){
-
ts+='for(vtemp['+f+']=0;vtemp['+f+']<'+args[f]+';vtemp['+f+']++)';
-
ts+='{';
-
var parm='tempArray';
-
for (var p=0;p<=f;p++) parm+='[vtemp['+p+']]';
-
ts+=parm+'=new Array('+args[(f+1)]+');'
-
}
-
for (var i=0;i<d;i++) ts+='}';
-
eval(ts);
-
return tempArray;
-
}
-
}
-
return this.array.toArray();
-
}
然后就可以直接var myArray = MyArray(2,3,2);
调用时候就可以直接写出myArray[x][y][z]即可
调用的时候如下:
-
var myArray = MyArray(2,3,2);
-
for (var x=0;x<2;x++)
-
for (var y=0;y<3;y++)
-
for (var z=0;z<2;z++)
-
myArray[x][y][z]=x+' '+y+' '+z;
-
-
for (var x=0;x<2;x++)
-
for (var y=0;y<3;y++)
-
for (var z=0;z<2;z++)
-
alert(myArray[x][y][z]);
暂时就一个toArray方法。myArray类型就是Array。而其他的length,sort等都还未写。慢慢加上好了。
好了。就写到这里啦。
