我一直在尝试从JSON URL中提取一些数据。
我已经可以使用以下代码做到这一点:
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else
//if key matches and value matches or if key matches and
value is not passed (eliminating the case where key matches but passed value does not)
if (i == key && obj[i] == val || i == key && val == '') { //
objects.push(obj);
} else if (obj[i] == val && key == ''){
//only add if the object is not already in the array
if (objects.lastIndexOf(obj) == -1){
objects.push(obj);
}
}
}
return objects;
}
..
var xhr = new XMLHttpRequest();
xhr.open("GET", json_url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// JSON.parse does not evaluate the attacker's scripts.
var resp = JSON.parse(xhr.responseText);
var item = "Entire Item Name";
var name = (getObjects(resp, '', item));
这将返回项目的数组,但是项目名称必须精确到首字母大写。
我尝试添加名为fuze.js的关键字查找器
我尝试过通过以下方式将其添加到脚本中:
var options = {
shouldSort: true,
//tokenize: true,
threshold: 0.6,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: ['name'],
id: 'name'
};
var fuse = new Fuse(resp, options);
var result = fuse.search("a");
console.log(result);
}
}
xhr.send();
引信js内容位于var名称下的if语句中。
您可以看到我尝试仅放置一个简单的“ a”以查看它是否实际上返回了一些数据。而且我已经尝试了很多选项,到目前为止,无论我尝试什么,它都不会返回任何结果。
有任何想法为什么不起作用?