$ .ajax自动完成无法在IE 11中运行?

时间:2019-02-06 15:45:45

标签: javascript jquery

我遇到的问题是,我下面的自动完成代码可在chrome和firefox上运行,但不能在Internet Explorer 11上运行。任何人都可以帮助我解决我的代码。我认为它的$.ajax问题不支持,但是任何人都可以通过下面的代码来帮助我。谢谢。

$("#searchTextField").autocomplete({
  minLength: 2,
  focus: function(event, ui) {
    event.preventDefault();
  },
  source: myData,
  select: function select(event, ui) {
    event.preventDefault();
    var url = '#{request.contextPath}/index.xhtml';
    var searchValue = ui.item.value;
    var data = new FormData();
    data.append('searchValue', searchValue);
    $.ajax({
      url: url,
      data: data,
      method: "POST",
      processData: false,
      contentType: false,
      cache: false,
    }).done(text => {
      $('#results').append($(text).find('#textTable'));
      $('#results').append($(text).find('table'));
      $('#results').append($(text).find('#bestTable'));
      $("#clearone").show();
    });
  },
  response: function response(event, ui,) {
    if (!ui.content.length) {
      var message = {
        value: "",
        label: "NOTHING FOUND"
      };
      ui.content.push(message);
    }
  }
});

1 个答案:

答案 0 :(得分:2)

在IE中无法正常工作的原因有两个。首先,response处理函数中有一个逗号结尾,需要将其删除:

response: function response(event, ui,) {

第二,您正在done()中使用箭头功能; IE的任何版本都完全不支持这些功能。

$.ajax({ /* ... */ }).done(text => {

请改用传统的匿名函数。这是带有这些修复程序的完整示例:

$("#searchTextField").autocomplete({
  minLength: 2,
  focus: function(event, ui) {
    event.preventDefault();
  },
  source: myData,
  select: function select(event, ui) {
    event.preventDefault();
    var url = '#{request.contextPath}/index.xhtml';
    var searchValue = ui.item.value;
    var data = new FormData();
    data.append('searchValue', searchValue);

    $.ajax({
      url: url,
      data: data,
      method: "POST",
      processData: false,
      contentType: false,
      cache: false,
    }).done(function(text) {
      $('#results').append($(text).find('#textTable'));
      $('#results').append($(text).find('table'));
      $('#results').append($(text).find('#bestTable'));
      $("#clearone").show();
    });
  },
  response: function response(event, ui) {
    if (!ui.content.length) {
      var message = {
        value: "",
        label: "NOTHING FOUND"
      };
      ui.content.push(message);
    }
  }
});

最后,请注意,您可以通过使用开发人员工具(按F12在大多数浏览器中打开它们)并在控制台中查看错误来调试JS问题。