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的对话框是多少呢?

代码1
  1. var a;
  2. for (var i=0;i<2;i++)
  3. {  
  4.    if (i==0)
  5.    {  
  6.      a=100;
  7.    }
  8.    else
  9.    {      
  10.      alert(a);
  11.    }
  12. }
代码2
  1. for (var i=0;i<2;i++)
  2. {  
  3.    if (i==0)
  4.    {  
  5.      a=100;
  6.    }
  7.    else
  8.    {    
  9.      alert(a);
  10.      var a = i;
  11.    }
  12. }
代码3
  1. for (var i=0;i<2;i++)
  2. {  
  3.    if (i==0)
  4.    {  
  5.      a=100;
  6.    }
  7.    else
  8.    {    
  9.      alert(a);
  10.    }
  11.    var a = i;
  12. }
代码4
  1. for (var i=0;i<2;i++)
  2. {  
  3.    if (i==0)
  4.    {  
  5.      a=100;
  6.    }
  7.    else
  8.    {  
  9.      var a = i;    
  10.      alert(a);
  11.    }
  12. }
代码5
  1. for (var i=0;i<2;i++)
  2. {  
  3.    var a;
  4.    if (i==0)
  5.    {  
  6.      a=100;
  7.    }
  8.    else
  9.    {      
  10.      alert(a);
  11.    }
  12. }

 

其实只要知道了以下即可:

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我取名为"勿忘我"。唯它最能表示这种感情。(千万不要骂我闷骚!)

 代码如下:

JS COOKIE
  1.   (function(F) {
  2.         var inputs = F.inputs || [];
  3.         if (inputs.length === 0) return;
  4.         var flag = F.flag || true;
  5.         var form = F.form;
  6.         var newfriend = false;
  7.         var that = this;
  8.         that.expD = 31536000000; //一年
  9.         that.cookieName = "ULOVEITINFO";
  10.         var autoFinish = function() {
  11.             var value = eval('/' + cookieName + '=([.]*[^;]*)/.exec(document.cookie)||"NEWFRIEND"');
  12.             if (value != "NEWFRIEND")
  13.                 if (inputs.length === value[1].split(",").length)
  14.                 for (var i = 0; i < inputs.length; i++) document.getElementById(inputs[i]).value = value[1].split(",")[i] || "";
  15.         } ();
  16.         var remember = function() {
  17.             if (document.getElementById(flag).checked) {
  18.                 var expDate = new Date();
  19.                 expDate.setTime(expDate.getTime() + this.expD);
  20.                 var key = "";
  21.                 for (var i = 0; i < inputs.length - 1; i++)
  22.                     key += document.getElementById(inputs[i]).value + ',';
  23.                 key += document.getElementById(inputs[i]).value + ';';
  24.                 document.cookie = cookieName + "=" + key + "expires=" + expDate.toGMTString();
  25.             }
  26.         }
  27.         document.getElementById(form).onsubmit = remember;
  28.     })({
  29.         inputs: ["comment_author", "comment_email", "comment_website"], flag: "comment_remember", form: "commentform"
  30.     });

 ps:很多地方说的过期设置用expire是不对的。expires才对。

JavaScript 多维数组类

作者:yaya | 时间:2009年10月7日 | 分类 学海无涯 | 标签 javascript 数组 | 0回复

 我们知道javascript 的多维数组是通过模拟实现的,比如二维数组a[3][2]的实现:

二维数组a[3][2]
  1. var a = new Array(3)
  2. a[0] = new Array(2);
  3. a[1] = new Array(2);
  4. a[2] = new Array(2);

当然,写出 [ ] 的形式也是一样的意思。 

而写成var a = new Array(3,2)是不行的。

可以我们总想事情变得简单。所以写了MyArray。如下:

MyArray
  1. var MyArray = function(){
  2. var args = arguments;
  3. this.array={
  4. toArray:function(){
  5. var tempArray;
  6. var d= args.length-1;
  7. var ts='';
  8. tempArray=new Array(args[0]);
  9. var vtemp = new Array(d);
  10. for (var f=0;f<d;f++){
  11. ts+='for(vtemp['+f+']=0;vtemp['+f+']<'+args[f]+';vtemp['+f+']++)';
  12. ts+='{';
  13. var parm='tempArray';
  14. for (var p=0;p<=f;p++) parm+='[vtemp['+p+']]';
  15. ts+=parm+'=new Array('+args[(f+1)]+');'
  16. }
  17. for (var i=0;i<d;i++) ts+='}';
  18. eval(ts);
  19. return tempArray;
  20. }
  21. }
  22. return this.array.toArray();

 然后就可以直接var myArray = MyArray(2,3,2);

调用时候就可以直接写出myArray[x][y][z]即可

 调用的时候如下:

 

调用
  1. var myArray = MyArray(2,3,2);
  2. for (var x=0;x<2;x++)
  3.   for (var y=0;y<3;y++)
  4.      for (var z=0;z<2;z++)
  5.         myArray[x][y][z]=x+' '+y+' '+z;
  6.  
  7. for (var x=0;x<2;x++)
  8.   for (var y=0;y<3;y++)
  9.      for (var z=0;z<2;z++)
  10.         alert(myArray[x][y][z]);

 
暂时就一个toArray方法。myArray类型就是Array。而其他的length,sort等都还未写。慢慢加上好了。

好了。就写到这里啦。

 

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. ...
  8. 12