Javascript 尽管在chrome控制台中正确显示,我的JSON对象仍返回为未定义?
我从维基百科随机获取了一篇文章,我可以在Chrome控制台中看到该对象作为输出,但在网页上,它只是说未定义。 我尝试过stringify以及将对象中的元素显示为[2][0][0][3],但都不起作用。他们都说打印“未定义”作为输出,而不是对象中包含的随机wiki页面的标题、内容或url 脚本代码:Javascript 尽管在chrome控制台中正确显示,我的JSON对象仍返回为未定义?,javascript,html,json,getjson,stringify,Javascript,Html,Json,Getjson,Stringify,我从维基百科随机获取了一篇文章,我可以在Chrome控制台中看到该对象作为输出,但在网页上,它只是说未定义。 我尝试过stringify以及将对象中的元素显示为[2][0][0][3],但都不起作用。他们都说打印“未定义”作为输出,而不是对象中包含的随机wiki页面的标题、内容或url 脚本代码: $(函数(){ $(“#随机”)。在(“单击”,函数(){ var url='1〕https://en.wikipedia.org/w/api.php?format=json&action=quer
$(函数(){
$(“#随机”)。在(“单击”,函数(){
var url='1〕https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
$.ajax({
url:url,
键入:“GET”,
contentType:“应用程序/json;字符集=utf-8”,
async:false,
数据类型:“json”,
成功:功能(数据、状态、jqXHR){
控制台日志(数据);
$('#result').html();
$('#result').prepend(“+JSON.stringify(数据[2])+”);
//字符串化(数据[2][0][0])
}
})
.done(函数(){
控制台日志(“成功”);
})
.fail(函数(){
控制台日志(“失败”);
})
.always(函数(){
console.log(“总是成功”);
})
//
})
})
随机的
如果您只想从Ajax响应中获取内容体,可以尝试以下方法:
$(函数(){
$(“#随机”)。在(“单击”,函数(){
var url='1〕https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
$.ajax({
url:url,
键入:“GET”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(数据、状态、jqXHR){
var pageId=Object.keys(data.query.pages)[0]| | false;
如果(页面ID){
var articleContent=data.query.pages[pageId]。修订版[0]['*'];
$('#result').html();
$(“#结果”).prepend(“+articleContent+”);
}
}}
)
.done(函数(){
控制台日志(“成功”);
})
.fail(函数(){
控制台日志(“失败”);
})
.always(函数(){
console.log(“总是成功”);
})
//
})
})
随机
这是一个有效的方法。令人困惑的是:
$(function() {
$("#random").on("click",function() {
var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
$.ajax({
url: url,
type: 'GET',
dataType: "json",
success: function(data, status, jqXHR) {
console.log(data);
$('#result').html();
var pageTitle = JSON.stringify(data.query.pages[Object.keys(data.query.pages)[0]].title);
var pageContent = data.query.pages[Object.keys(data.query.pages)[0]].revisions;
var pageCon = pageContent[Object.keys(pageContent)[0]];
var pageC = pageCon["*"];
//data.query.pages[Object.keys(data.query.pages)[0]];
$('#result').prepend("<div><div class='result-head'>"+pageC+"</div></div>");
$('#result').prepend("<div><h2>"+pageTitle+"</h2></div>");
//stringify(data[2][0][0])
}}
)
.done(function() {
console.log("success");
})
.fail(function() {
console.log("fail");
})
.always(function() {
console.log("always success");
})
//
})
})
$(函数(){
$(“#随机”)。在(“单击”,函数(){
var url='1〕https://en.wikipedia.org/w/api.php?format=json&action=query&generator=random&grnnamespace=0&prop=revisions&rvprop=content&grnlimit=1&callback=?';
$.ajax({
url:url,
键入:“GET”,
数据类型:“json”,
成功:功能(数据、状态、jqXHR){
控制台日志(数据);
$('#result').html();
var pageTitle=JSON.stringify(data.query.pages[Object.keys(data.query.pages)[0]].title);
var pageContent=data.query.pages[Object.keys(data.query.pages)[0]]版本;
var pageCon=pageContent[Object.keys(pageContent)[0]];
var pageC=pageCon[“*”];
//data.query.pages[Object.keys(data.query.pages)[0]];
$('#result')。前缀(“+pageC+”);
$(“#结果”).prepend(“+pageTitle+”);
//字符串化(数据[2][0][0])
}}
)
.done(函数(){
控制台日志(“成功”);
})
.fail(函数(){
控制台日志(“失败”);
})
.always(函数(){
console.log(“总是成功”);
})
//
})
})
尝试使用$('#result').prepend(“+JSON.stringify(data)+”);另外,数据不是数组contentType:“application/json;charset=utf-8”,
-您正在发出GET请求。没有描述异步类型的内容。async:false
-不推荐使用同步请求。不要这样做。在URL返回的数据中,我看不到名为2
的属性。你期望得到什么?是的,但我给了你最后答案中使用的例子。。。。我说这只是演示如何获取身体数据。。。