Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JQuery自动完成中使用XMLHttpRequest?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何在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(); 这段代码也可以工作,但是如

我需要来自XMLHttpRequest的JQuery自动完成中的数据 这是我的XMLHttpRequest代码:

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”*我用我的“新”代码编辑问题,现在用新代码就可以了。我知道这不是最好的表演,但它目前的效果是这样的。但是谢谢你的帮助。也许我以后会更有效率。