2 yy211zhu yy211zhu 于 2017.01.05 16:50 提问

jquery ajax 赋值问题 undefined

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

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

11个回答

u010528826
u010528826   2017.01.06 18:52
已采纳

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

welan123123
welan123123   2017.01.05 16:54

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

Birds_Cerebrum
Birds_Cerebrum   2017.01.05 17:58

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

showbo
showbo   Ds   Rxr 2017.01.05 19:44

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

huhedong1182738042
huhedong1182738042   2017.01.05 16:54

data.data有数据内容吗?

yy211zhu
yy211zhu conso.log(data)是能打印出数据的
11 个月之前 回复
Eyseem
Eyseem   2017.01.05 17:34

先看下手册,getJSON怎么用。

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

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

yy211zhu
yy211zhu 这样是可以的
11 个月之前 回复
sun1021873926
sun1021873926   Ds   Rxr 2017.01.05 23:36

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

JE_GE
JE_GE   2017.01.05 23:39

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

Eyseem
Eyseem   2017.01.06 10:14

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

Eyseem
Eyseem   2017.01.06 10:20

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

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!