yy211zhu
2017-01-05 08:50
采纳率: 100%
浏览 3.0k

jquery ajax 赋值问题 undefined

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

    initdata 为undefined,为什么?因为异步吗.怎么解决
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • Mr-Yao 2017-01-06 10:52
    已采纳

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

    点赞 打赏 评论
  • huhedong1182738042 2017-01-05 08:54

    data.data有数据内容吗?

    点赞 打赏 评论
  • 奔跑的小鱼儿 2017-01-05 08:54

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

    点赞 打赏 评论
  • Eyseem 2017-01-05 09:34

    先看下手册,getJSON怎么用。

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

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

    点赞 打赏 评论
  • Birds_Cerebrum 2017-01-05 09:58

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

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

    点赞 打赏 评论
  • 夕阳雨晴 2017-01-05 15:36

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

    点赞 打赏 评论
  • JE_GE 2017-01-05 15:39

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

    点赞 打赏 评论
  • Eyseem 2017-01-06 02:14

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

    点赞 打赏 评论
  • Eyseem 2017-01-06 02:20

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

    点赞 打赏 评论
  • Eyseem 2017-01-06 02:25

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

    点赞 打赏 评论

相关推荐 更多相似问题