繁体   English   中英

如何从 javascript 中的 jQuery.getJSON 方法获取 responseText?

[英]How do you get responseText from jQuery.getJSON method in javascript?

我正在尝试使用 jQuery.getJSON 方法从我的目录中读取 JSON 文件,它返回图片中显示的对象。 我想从对象中获取 responseText 但不知道如何。

var jsonData = jQuery.getJSON('relationalData.json');

我尝试使用以下方法提取 responseText 但它们都失败了。

var response = jsonData.responseText;
var response = jsonData['responseText'];

这是我在 json 文件上使用 jQuery.getJSON 后得到的对象。

我也尝试使用但没有任何运气,因为该方法甚至没有被 json 文件调用。 不过,当我使用 xml 时它起作用了。

$.get(filename, function(data){
   var responseText = data;
});

与guest271314类似的解决方案,但也许对某人仍然有启发意义......

 $.getJSON('http://ws.spotify.com/search/1/artist.json?q=foo') .done(function(obj,status,xhdr){$('#out').append(xhdr.responseText);});
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="out"><div>

重要的部分是在xhdr对象中查找.responseText属性,可以通过回调函数的第三个参数访问该属性。

遇到了这个长期以来一直被问到的问题,但对于未来的访问者,我的解决方案在哪里:

$.getJSON 方法使用 HTTP GET 请求从服务器获取数据,成功调用的响应在 responseText 属性中返回,如您在控制台中看到的那样。

因此,要获取 responseText 的数据,您必须使用 JSON.parse() 方法将数据检索到 javaSrcipt 对象,如下所示:

var jsonData = JSON.parse(jsonCall.responseText);

但是 $.getJSON() 方法是异步的,所以这必须在回调函数中完成,否则响应可能不存在。

最终解决方案:

var jsonCall = $.getJSON('URL',function(){
   var jsonData = JSON.parse(jsonCall.responseText);
   console.log(jsonData);
  });

尝试使用.then() ,用responseJSON代替responseText

 var jsonData = jQuery.getJSON("https://gist.githubusercontent.com/guest271314/23e61e522a14d45a35e1/raw/a5ac6cffdc1ffab39f9db425844721b528751654/a.json"); jsonData.then(function(data, textStatus, jqxhr) { alert(jqxhr.responseJSON) })
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM