当我试图访问我存储在字符串数组中的文本时,我遇到了问题。我知道,问题似乎很容易,但我无法弄清楚我哪里出错...
因此,当我将控制台的内容记录到浏览器时,我可以看到我得到的值如下:
console.log(myStringArray)
output:
10[...]
0: "a lot of text here"
1: "also here"
2: "and here... etc"
...
但是当我试图访问像:
这样的值时myStringArray[0];
我得到的结果是一个插槽阵列,其中没有任何内容,如:
(1)[...]
0: ""
length: 1
>_proto__: Array[]
尝试将结果转换为字符串等也没有那么好用。 有人可以帮助我访问这些值,谢谢!
修改 我得到的文字是来自wiki:s API的文章。
function getMoreText(){
for(let j = 0; j < titlesInSearch.length; j++){
textContent[j] = [''];
textUrl = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=' + titlesInSearch[j];
$.getJSON({
url: textUrl,
dataType: "jsonp",
success: function(data, status, xhr) {
var page = data.query.pages;
var pageId = Object.keys(page)[0];
if(page[pageId].title == titlesInSearch[j]){
textContent[j] = page[pageId].extract;
}
}
})
}
}
当我在控制台记录值时,当我要更新HTML代码时,结果如上所述:
function updateGUI(){
//resetting when getting new articles
document.getElementById("artikel").innerHTML = '';
//getting the result
console.log(textContent);
//not getting anything
console.log(textContent[0]);
for(let b = 0; b < titlesInSearch.length; b++)
{
console.log(textContent[b]);
if(summary[b].includes("may refer to:")){
console.log("filtered: 'may refer to'") //do nothing
}
else if(summary[b] != ''){
document.getElementById("artikel").innerHTML += ('<div>' + textContent[b] +'</div>');
}
}
}
答案 0 :(得分:-1)
首先添加到网址&origin=*
,否则您将收到来自维基的错误
无法加载 https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java: 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许原点'null'访问。如果是不透明的 响应满足您的需求,将请求的模式设置为'no-cors' 在禁用CORS的情况下获取资源。
其次,您需要等待数据才能访问它们。
如果您希望将它们存储在textContent = []
数组中,那么如果您在完成与http://wiki.api的连接之前阅读它并获得响应,则将其清空。
您可以将第二个功能重写为就地readData(singleContent)
并在当时使用一个项目。这样您就不需要等待来自wiki的每个响应。
这是在vanilla javascript中,但在$ .getJsons或$ .ajax中的想法是一样的。
/* jshint node: true */
//var fetch = require('node-fetch')
var titlesInSearch = ['java', 'linux']
var textContent = []
function getMoreText(){
"use strict"
titlesInSearch.forEach(function(searchItem){
var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&origin=*&titles=' + searchItem
return fetch(url)
.then(function(response){
return response.json()
})
.then(function(data) {
var page = data.query.pages;
var pageId = Object.keys(page)[0];
var singleContent =''
if (page[pageId].title.toUpperCase === searchItem.toUpperCase) {
singleContent = page[pageId].extract
textContent.push(singleContent.substring(0,50)) //short str
}
readData(singleContent)
})
})
}
getMoreText()
function readData(singleContent){
"use strict"
// read data one by one
console.log(singleContent)
console.log('-----------------------------')
console.log(textContent) // array
}
注意console.log('----------'),你会看到有趣的事情。当您获得单个singleContent
以及数组textContent
如何查看每个请求时(它有多少项)。