Javascript 如何在JQuery自动完成中使用XMLHttpRequest?
我需要来自XMLHttpRequest的JQuery自动完成中的数据 这是我的XMLHttpRequest代码:Javascript 如何在JQuery自动完成中使用XMLHttpRequest?,javascript,jquery,json,Javascript,Jquery,Json,我需要来自XMLHttpRequest的JQuery自动完成中的数据 这是我的XMLHttpRequest代码: var jsonRequest = new XMLHttpRequest(); jsonRequest.open('GET', path); jsonRequest.onload = function(){ var a = jsonRequest.removeEventListener; }; jsonRequest.send(); 这段代码也可以工作,但是如
var jsonRequest = new XMLHttpRequest();
jsonRequest.open('GET', path);
jsonRequest.onload = function(){
var a = jsonRequest.removeEventListener;
}; jsonRequest.send();
这段代码也可以工作,但是如何在JQuery autocomplete中使用var a呢
这是JQuery:
$('#tags').autocomplete({
source: function(request, response) {
var data = a;
var datamap = data.map(function(i) {
return {
label: i.serial + ' - ' + i.mac,
value: i.serial + ' - ' + i.mac,
desc: i.cpe_ip
}
});
var key = request.term;
datamap = datamap.filter(function(i) {
return i.label.toLowerCase().indexOf(key.toLowerCase()) >= 0;
});
response(datamap.slice(0, 15));
},
minLength: 1,
delay: 100
}))
如果我将它与JSON数据一起用于var数据,那么效果很好。但像这样就不行了
谢谢你的帮助
现在我有这个:
$('snmcAuto')。自动完成({
来源:功能(请求、响应){
var jsonRequest=new XMLHttpRequest();
打开('GET',path);
jsonRequest.onload=函数(数据){
响应(JSON.parse(data));
};
var datamap=data.map(函数(i){
返回{
标签:i.serial+'-'+i.mac,
值:i.serial+'-'+i.mac,
描述:i.cpe\U ip
}
});
var key=request.term;
datamap=datamap.filter(函数(i){
返回i.label.toLowerCase().indexOf(key.toLowerCase())>=0;
});
响应(datamap.slice(0,15));
jsonRequest.send();
},
最小长度:1,
延误:100
});代码>要使用远程数据源(由AJAX访问)作为自动完成数据的源,可以执行以下操作。关键是您必须在AJAX请求的“onload”回调中返回对autocomplete的响应,以便它能够访问下载的数据。您还必须通过querystring将用户输入的搜索词传递给服务器
$('#tags').autocomplete({
source: function(request, response) {
var jsonRequest = new XMLHttpRequest();
jsonRequest.open('GET', path + "?term=" + request.term);
jsonRequest.onload = function(data){
response(JSON.parse(data.responseText));
};
jsonRequest.send();
},
minLength: 1,
delay: 100
});
要使用远程数据源(由AJAX访问)作为自动完成数据的源,可以执行以下操作。关键是您必须在AJAX请求的“onload”回调中返回对autocomplete的响应,以便它能够访问下载的数据。您还必须通过querystring将用户输入的搜索词传递给服务器
$('#tags').autocomplete({
source: function(request, response) {
var jsonRequest = new XMLHttpRequest();
jsonRequest.open('GET', path + "?term=" + request.term);
jsonRequest.onload = function(data){
response(JSON.parse(data.responseText));
};
jsonRequest.send();
},
minLength: 1,
delay: 100
});
旁白:由于您使用的是jquery,jquery的$.ajax()方法比内置的XMLHttpRequest对象更易于使用。它为相同的功能提供了一个更好的包装器。@ADyson yeat,如果你试一下的话,那么我怎么能用这个来获得纯JSON呢?附带的一点:由于你使用的是jquery,jquery的$.ajax()方法比内置的XMLHttpRequest对象更容易使用。它为相同的功能提供了一个更好的包装器。@ADyson yeat,如果你尝试一下的话,但是我怎么能用这个获得纯JSON呢?thx为你的答案。你所说的请求是什么意思?我也可以只使用包含数据的文件夹路径?请求。term
是自动完成插件提供的值。它表示用户键入的内容。在“我也可以只使用包含数据的文件夹的路径”一节中讨论了这一点……在现实世界的应用程序中没有。您需要使用URL。需要运行服务器端代码,该代码将根据用户键入的内容过滤数据集,并仅返回相关结果。(事实上,您可以从服务器返回所有结果,然后在将结果返回自动完成之前在JavaScript中进行处理,但如果数据集中的行数超过几行,则效率会非常低)因此在我的示例中,我有一个文件夹,其中包含一些JSON文件。JSON文件在登录时得到一个rndm名称,变量“path”类似于“FolderName/userdata.JSON”*我用我的“新”代码编辑问题,现在用新代码就可以了。我知道这不是最好的表演,但它目前的效果是这样的。但是谢谢你的帮助。也许我以后会更有效率。谢谢你的回答。你所说的请求是什么意思?我也可以只使用包含数据的文件夹路径?请求。term
是自动完成插件提供的值。它表示用户键入的内容。在“我也可以只使用包含数据的文件夹的路径”一节中讨论了这一点……在现实世界的应用程序中没有。您需要使用URL。需要运行服务器端代码,该代码将根据用户键入的内容过滤数据集,并仅返回相关结果。(事实上,您可以从服务器返回所有结果,然后在将结果返回自动完成之前在JavaScript中进行处理,但如果数据集中的行数超过几行,则效率会非常低)因此在我的示例中,我有一个文件夹,其中包含一些JSON文件。JSON文件在登录时得到一个rndm名称,变量“path”类似于“FolderName/userdata.JSON”*我用我的“新”代码编辑问题,现在用新代码就可以了。我知道这不是最好的表演,但它目前的效果是这样的。但是谢谢你的帮助。也许我以后会更有效率。