jquery ajax 赋值问题 undefined

var initdata;
$.getJSON("../../data/data.json",function(data){
initdata = data.data;
});

    initdata 为undefined,为什么?因为异步吗.怎么解决

异步的原因。异步的AJAX,发起请求之后代码便继续向下执行走了,所以你这里赋值不了。
如果你非要这么用,那么去使用$.ajax(),并将请求方式设置为同步,即添加:async: false。
或者在全局设置Ajax属性
$.ajaxSetup({
async: false
});
之后在用你这种方式

data.data有数据内容吗?

你参数传过去那个页面有没有定义它

先看下手册,getJSON怎么用。

語法:
jQuery.getJSON( url [, data ] [, success( data, textStatus, jqXHR ) ] )

"../../data/data.json"这个明显不是url格式。所以你会找不到资源,找不到当然就是undefined。换成url试试。

首先看到你的路径使用的是相对路径,先确认你的路径有没有问题,不过貌似是没有问题的,如果有问题getJson函数直接会出错。
其次请将data.data使用alert方式弹出来看看是不是有数据,如果为null或者undefined的话我想你应该明白了为什么initdata为undefined了。

你是函数return返回initdata吗或在$.getJSON之后直接使用?如果是肯定是获取不到的,看这个:http://ask.csdn.net/questions/355516

有可能是异步的原因,将Ajax请求设置为同步请求可以解决此类问题。

直接使用data先试试
data.data后面没有返回json对象这个是不对的

再多说一点,想想js是什么时候运行。在用户浏览器中执行,那js的运行环境是哪?是客户端啊!亲!那你getJSON是想获取哪里的数据?是不是你服务端的数据?那用什么方式获取这个数据?肯定是http请求啊,http请求中怎么可能支持“../../”这种路径呢?如果能,那服务端还安全吗?来几个这个不就能获取服务端所有路径了吗?

你使用“../../data/data.json",url会自动拼成 "http://你的当前域名/../../data/data.json"。请求肯定是报错的。

所以你的回调函数中的data值不是json数据而是服务器给的报错信息,也就是一个404或者什么的html内容,所以你的data.data肯定是undefined