日期:2014-05-16  浏览次数:20635 次

看了一段代码没太看懂 求高手给解释下注释的部分
JScript code

JS文件是:jquery-1.6.2.js
jQuery.extend({

    getScript: function( url, callback ) {
        return jQuery.get( url, undefined, callback, "script" );
    },

    getJSON: function( url, data, callback ) {
        return jQuery.get( url, data, callback, "json" );
    },

Make.aspx页面调用
var url = "Make.aspx?act=a&random=" + Math.random;
$.getJSON(url, function(data) {     //这句的function(data)这个对象数据是从哪里得到的,是从上面的url执行完得到的?我打印了一下data,输出的值是object
var json = eval(data);
var count = json["test"].length;       //这句的json["test"],这里的test是从哪接的呢,找了半天也没找到,打印了一下count,得到的结果是8,这个8我就不太明白是什么了,要说数据库里的数据,我数据库里才6条

$.each(json["test"], function(i) {
    str += "<td colspan=\"" + this.ID + "\" class=\"txt-4\">" + this.Name + "</td>";
    colspan_num = parseInt(colspan_num) + parseInt(this.ID);
    //alert(colspan_num);
});



------解决方案--------------------
1,data 是固定写法,指ajax返回的结果字符串,你可以alert来看到底是什么
2,
var json = eval(data);
var count = json["test"].length; //这句的json["test"],
json代表了返回的字符串的激活对象,
比如data的字符串可能是这样 
{"test":{"b":1},"test":{"b":2},"name":"aa"}
那么json=eval(data)后
json就是一个对象,json["test"]就是 这个对象内名为"test"的子对象的集合,
json["test"].length 就应该是2