JavaScript数组,加上AJAX之后,竟然变了,我茫然了
一段简单的,JavaScript数组,记录一些东西,
var arrError = [];
arrError["a"]=1;
arrError["x"]=0;
.......
之前没有用AJAX,用循环遍历之后用字符串传递给后台,读取
for (var o in arrError) {
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}
这样写,是没有问题的,
将得到"a,1|x,0|"这样的字符串,后台解析。
但是,当加入AJAX后
AjaxPro.Utility.RegisterTypeForAjax(typeof(Page1));
这种ajax的代码我用了好久了,调用方法是没有错的。
但JavaScript端的,遍历数组,就出问题了。
for (var o in arrError) {
str += o + "," + (arrError[o] ? 1 : 0) + "|";
}
这段代码得出的结果是
clear,1|addRange,1|然后才我原来想要的数组里的内容,调试的时候我设断点看,之前的数组没有那两个方法,现在调试,就有这两个方法了,怎么办?
------解决方案--------------------
http://www.pccode.net/info/2011/08/03/20110803-7165.html
AjaxPro客户端框架总结
由于微软构建asp.net 2.0时对ajax技术的不重视,在04、05年ajax风起云涌之时,在asp.net出现了AjaxPro这个Ajax框架,虽然随着asp.net ajax的发布,AjaxPro被强大的asp.net ajax的光芒覆盖,但AjaxPro的简单易用性方面还是非常不错的。
AjaxPro在客户端会输出三个Core.ashx、Converter.ashx和Prototype.ashx三个文件,其实就是javasript文件。其中Prototype.js对Object建立了extend,然后在extend上增加了Apply和Bin方法,之后的Ajax调用的核心文件Core.ashx就是基于extend上进行的。Prototype.js里对Array,String进行扩展并增加了2个事件方面的方法addEvent与removeEvent方法。
Array对象扩展:
view sourceprint?01 push: function(o) {
02 this[this.length] = o;
03 },
04 addRange: function(items) {
05 if(items.length > 0) {
06 for(var i=0; i<items.length; i++) {
07 this.push(items);
08 }
09 }
10 },
11 clear: function() {
12 this.length = 0;
13 return this;
14 },
15 shift: function() {
16 if(this.length == 0) { return null; }
17 var o = this[0];
18 for(var i=0; i<this.length-1; i++) {
19 this = this[i + 1];
20 }
21 this.length--;
22 return o;
23 }
String对象的扩展:
view sourceprint?01 trimLeft: function() {
02 return this.replace(/^\s*/,"");
03 },
04 trimRight: function() {
05 return this.replace(/\s*$/,"");
06 },
07 trim: function() {
08 return this.trimRight().trimLeft();
09 },
10 endsWith: function(s) {
11 if(this.length == 0 || this.length < s.length) { return false; }
12 return (this.substr(this.length - s.length) == s);
13 },
14 startsWith: function(s) {
15 if(this.length == 0 || this.length < s.length) { return false; }
16 return (this.substr(0, s.length) == s);
17 },
18 split: function(c) {
19 var a = [];
20 if(this.length == 0) return a;
21 var p = 0;
22 for(var i=0; i<this.length; i++) {
23 if(this.charAt(i) == c) {
24 a.push(this.substring(p, i));
25 p = ++i;
26 }
27 }
28 a.push(s.substr(p));
29 return a;
30 }
String对象还增加了2个静态方法:
view sourceprint?01 format: function(s) {
02 for(