Я смотрю везде и не могу найти ответ на этот вопрос.
Можно ли указать вызов AJAX для возврата только с массивами, равными предоставленному ключу?
Я сделал простой рандомизатор, и он отлично работает при общем поиске, но при фильтрации поиска может потребоваться горячая минута, чтобы вернуть результат, потому что я настроил его на прохождение теста, равного переменной ' запрос. Если он не проходит, функция запускается снова, пока не вернётся случайный массив, равный запросу var.
Естественно, я бы хотел ускорить процесс. Кто-нибудь может дать рекомендации? Я уверен, что это что-то простое и заранее извиниться.
Рабочую демонстрацию вы можете увидеть здесь:
https://codepen.io/ohBretterson/pen/eLBPbQ?editors=0010
Я предполагаю, что должен манипулировать своим объектом данных после успеха:
function getTreasure() {
$.ajax({
url: "https://codepen.io/ohBretterson/pen/QVGRwG.js",
async: true,
success: function(csvd) {
data = $.csv.toArrays(csvd);
},
dataType: "text",
complete: function() {
let i = Math.floor(Math.random() * data.length);
let type = data[i][5];
let rarity = data[i][3];
let item = data[i][0];
let desc = data[i][1];
let req = data[i][6];
let req2 = data[i][7];
// Filter query
if (query === undefined) {
} else if (rarity !== query && type !== query) {
return getTreasure();
}
$(".controls").fadeIn("slow");
let content = `
<div class='type fade-in'>${type}</div>
<div class='rarity'>${rarity}</div>
<div class="cardContainer">
<p class='itemName fade-in'>${item}</p>
<div class="cardContents fade-in">
<div class="description">${desc}</div>
<hr>
<div class='requirement'>${req}<br>${req2}</div>
</div>
</div>
<div class='coin fade-in'><p class="est-value">est.value</p>${data[i][2]}</div>
<div class='weight fade-in'><p class="weight-value">weight</p>${
data[i][4]
}</div>
<div class='author fade-in'>${data[i][8]}</div>
<svg stroke='#000000' stroke-width='1' stroke-miterlimit='10' class='path' id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 257 368.51"><title>thing</title><circle class="circleStroke" cx="32.3" cy="338.56" r="21.2" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="weightStroke" d="M750.58,363.36l-6.05-24.19A2.7,2.7,0,0,0,742,337h-5a7.94,7.94,0,1,0-15.42-2.65,7.74,7.74,0,0,0,.49,2.65h-5a2.71,2.71,0,0,0-2.56,2.14l-6,24.19a4.28,4.28,0,0,0,3.84,5.48h34.45C749.37,368.84,751.27,366.12,750.58,363.36Zm-21.06-26.92a2.95,2.95,0,1,1,3-2.94A2.94,2.94,0,0,1,729.52,336.44Z" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="innerStroke" d="M521.88,34.31h.33v-.37a9.85,9.85,0,0,1,9.84-9.84H750.3a9.85,9.85,0,0,1,9.85,9.84V366.06a9.85,9.85,0,0,1-9.85,9.84H563.22a29,29,0,1,0-41-41V62.58" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="innerStroke" d="M514.36,62.58V361.22a22.53,22.53,0,0,0,22.53,22.53H745.46A22.53,22.53,0,0,0,768,361.22V38.78a22.53,22.53,0,0,0-22.54-22.53H536.89A22.54,22.54,0,0,0,514.8,34.31" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="ribbonStroke" d="M670.63,62.58H513.28A1.28,1.28,0,0,1,512,61.29V35.6a1.29,1.29,0,0,1,1.29-1.29H670.63l-7.86,14.13Z" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/></svg>
`;
$("#card").html(content)
$(".fade-in")
.animate("slow")
.css("opacity", "1");
$("hr").css("width", "60%");
if (type === "Book"){
$("body").removeClass().addClass('book', 1000);
} else if (type === "Potion"){
$("body").removeClass().addClass('potion', 1000);
} else if (type === "Armor"){
$("body").removeClass().addClass('armor', 1000);
} else if (type === "Adventuring Gear"){
$("body").removeClass().addClass('gear', 1000);
} else if (type === "Quest Hook"){
$("body").removeClass().addClass('quest', 1000);
} else if (type === "Ring"){
$("body").removeClass().addClass('ring', 1000);
} else if (type === "Treasure"){
$("body").removeClass().addClass('treasure', 1000);
} else if (type === "Weapon"){
$("body").removeClass().addClass('weapon', 1000);
} else if (type === "Wondrous Item"){
$("body").removeClass().addClass('wondrous-item', 1000);
} else $("body").removeClass();
}
});
}