var not accessible/visible within $.getJSON
var not accessible/visible within $.getJSON
首先,我是一个新手。除了 "if-else" 部分的 "if" 部分,下面的代码有效。提醒的 "searchTerm" 是用户在具有多个值的输入字段中输入的最后一个值。因此,如果用户输入 "a, b, c, d",并且 "a"(或任何其他值)满足 ===0 条件,则 "d" 会被提醒。
我在这里研究了 Whosebug 并搜索了其他领域并了解了回调和承诺,并且 .getJSON 是异步的并且在 JSON 之外可见,但我不得不承认我'我显然没有得到它,我确定我错过了一些简单的东西。任何 insight/help 将不胜感激。
for (var l = 0; l < searchTermArray.length; l++) {
searchTerm = searchTermArray[l];
searchURL = buildURL(searchTerm);
getResults(searchURL, searchTerm);
function getResults() {
$.getJSON(searchURL, function (responses) {
presentResults(responses, searchTerm);
});
}
function presentResults(responses, searchTerm) {
response = responses.search;
if (responses.search.return.count === 0) {
alert(searchTerm + " Not Found");
} else {
alert("Results found");
****Do other stuff with the results****
}
}
}
您的问题是 for 循环没有等待您的异步 getjson。 Searchurl 和搜索词被每次迭代覆盖。这就是为什么你总是得到最后的搜索词。编写一个函数并从中传递所有搜索 url 和回调。
我希望这会引导您找到解决方案。
PS:您的函数定义也在 for 循环内,这不是首选。
我继续将函数从 for 循环中分离出来,然后将 .getJSON 包装在它自己的函数中并传递 searchURL 和 searchTerm 参数,这使我能够使用满足条件的 searchTerm .
function getResults(searchURL, searchTerm) {
responses = '';
$.getJSON(searchURL, function (responses) {
presentResults(responses, searchTerm);
}); // close JSON
}
首先,我是一个新手。除了 "if-else" 部分的 "if" 部分,下面的代码有效。提醒的 "searchTerm" 是用户在具有多个值的输入字段中输入的最后一个值。因此,如果用户输入 "a, b, c, d",并且 "a"(或任何其他值)满足 ===0 条件,则 "d" 会被提醒。
我在这里研究了 Whosebug 并搜索了其他领域并了解了回调和承诺,并且 .getJSON 是异步的并且在 JSON 之外可见,但我不得不承认我'我显然没有得到它,我确定我错过了一些简单的东西。任何 insight/help 将不胜感激。
for (var l = 0; l < searchTermArray.length; l++) {
searchTerm = searchTermArray[l];
searchURL = buildURL(searchTerm);
getResults(searchURL, searchTerm);
function getResults() {
$.getJSON(searchURL, function (responses) {
presentResults(responses, searchTerm);
});
}
function presentResults(responses, searchTerm) {
response = responses.search;
if (responses.search.return.count === 0) {
alert(searchTerm + " Not Found");
} else {
alert("Results found");
****Do other stuff with the results****
}
}
}
您的问题是 for 循环没有等待您的异步 getjson。 Searchurl 和搜索词被每次迭代覆盖。这就是为什么你总是得到最后的搜索词。编写一个函数并从中传递所有搜索 url 和回调。
我希望这会引导您找到解决方案。
PS:您的函数定义也在 for 循环内,这不是首选。
我继续将函数从 for 循环中分离出来,然后将 .getJSON 包装在它自己的函数中并传递 searchURL 和 searchTerm 参数,这使我能够使用满足条件的 searchTerm .
function getResults(searchURL, searchTerm) {
responses = '';
$.getJSON(searchURL, function (responses) {
presentResults(responses, searchTerm);
}); // close JSON
}