使用jquery时出现“No Transport”错误,1.10.x或1.11.x是否适用于IE7?有什么工作吗?

时间:2016-01-07 05:08:50

标签: jquery jquery-ui internet-explorer

我正在使用jquery ui自动完成,并且从我进入ie7的bug中听起来像jquery 1.10.2或1.11.3都失败了ajax调用。

我想知道是否有人知道任何解决方法?

EDIT1

该代码适用于所有其他浏览器和IE10 + 我已经将问题追溯到jquery的以下部分。

for ( ; list && firingIndex < firingLength; firingIndex++ ) {
    if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
     memory = false; // To prevent further calls using add
     break;
    }
   }

我的代码永远不会成功,它总是进入错误功能。我不知道为什么。我相信这是导致它的代码。

Edit2:这是我的代码。

<html>

<head>

  <script src="jquery-ui-1.11.4/external/jquery-1.10.2/jquery-1.10.2.js"></script>
  <!--<script src="//code.jquery.com/jquery-1.10.3.js"></script>-->
  <script src="jquery-ui-1.11.4/jquery-ui.js"></script>
  <script src="jquery.base64.js"></script>
  <script src="jquery-ui-1.11.4/plugins/jquery.ui.autocomplete-html.js"></script>
  <script src="PoolPartyAutoCompleteSetter.js"></script>
  <link rel="stylesheet" href="jquery-ui-1.11.4/jquery-ui-modified.css">


  <link rel="stylesheet" href="brik.css">
  <!--Will be supplied by BRIK-->

  <script>
    function select(event, ui) {

      $(this).val('')
      alert(ui.item.mydata.uri)
      return false
        //alert(JSON.stringify(ui.item.mydata))
    }

    $(document).ready(function() {

      set_autocomplete($, select, $("#search_topics"), "dc_subject")
    });
  </script>


</head>





<body>

  <div>
    <div id="topics">Topics
      <input id="search_topics" class="submit-text" type="text"></input>
    </div>
  </div>

</body>

</html>

function set_autocomplete($, select, $input, field) {

  switch (field) {
    case "dc_contributor_author":

      var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBAuthors";
      break;

    case "dc_subject":

      var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBTopics";
      break;

    case "iadb_department":

      var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBDepartments";
      break;

    case "dc_contributor_institution":

      var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBInstitutions";
      break;

    case "dc_identifier_jel":

      var scheme = "http://thesaurus.iadb.org/jelcodes/IdBJelCodes";
      break;

    default:

      var scheme = "http://thesaurus.iadb.org/publicthesauri/IdBCountries";

  }

  $input.autocomplete({

    source: function(request, response) {

      var hint = request.term;

      $.ajax({

        url: "http://thesaurus.iadb.org/extractor/api/suggest",

        data: {
          projectId: "1DCE4EC2-E3AB-0001-A09D-1BC01E70CE80",
          language: "en",
          searchString: request.term,
          numberOfConcepts: 1000
        },


        dataType: 'json',

        crossDomain: true,


        beforeSend: function(req) {
          if (!window.btoa) window.btoa = $.base64.btoa;
          req.setRequestHeader('Authorization', 'Basic ' + btoa('xxxxx:xxxxx'));
        },

        /*xhrFields: {
            withCredentials: true
        },*/

        error: function(jqXHR, textStatus, errorThrown) {
          response(textStatus)
        },

        success: function(data) {

          var datatable = Array();

          for (i = 0; i < data.suggestedConcepts.length; i++) {

            if (scheme == data.suggestedConcepts[i].conceptSchemes[0].uri) {


              datatable.push({
                label: hintHighlight(data.suggestedConcepts[i].prefLabel, hint),
                value: data.suggestedConcepts[i].prefLabel,
                mydata: data.suggestedConcepts[i]
              })

            }

          }


          response(datatable.slice(0, 13).sort(function(a, b) {

            if (a.label.toLowerCase() == b.label.toLowerCase())
              return 0;
            if (a.label.toLowerCase() > b.label.toLowerCase())
              return 1;
            else
              return -1

          }));
        }
      })
    },

    minLength: 2,

    select: select,


    html: true,

    open: function() {
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
    },
    close: function() {
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
    }
  }).autocomplete("instance")._renderMenu = function(ul, items) { // Render different background for even and odd line of the menu
    var that = this;
    $.each(items, function(index, item) {
      that._renderItemData(ul, item);
    });
    $(ul).find("li:odd").addClass("ac_odd");

  }
}



function hintHighlight(sentence, hint) {



  var reg = new RegExp(hint, "gi");

  var matches = sentence.match(reg)

  if (matches == null)
    return sentence;

  var highlighted = sentence;

  for (var i = 0; i < matches.length; i++) {

    highlighted = highlighted.replace(matches[i], "<strong class = \"ac_highlight\">" + matches[i] + "</strong>")
  }

  return highlighted;
}

EDIT3

我已将其跟踪到Jquery

中的以下代码
// Get transport
  transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );

  // If no transport, we auto-abort
  if ( !transport ) {
   done( -1, "No Transport" );
  } else {
   jqXHR.readyState = 1;

   // Send global event
   if ( fireGlobals ) {
    globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
   }
   // Timeout
   if ( s.async && s.timeout > 0 ) {
    timeoutTimer = setTimeout(function() {
     jqXHR.abort("timeout");
    }, s.timeout );
   }

传输始终未定义。 最好

1 个答案:

答案 0 :(得分:1)

jQuery 1.x确实支持IE7。 jQuery UI 1.11.x不支持IE7。

以下是jQuery浏览器支持的链接:https://jquery.com/browser-support/

根据该图表,jQuery 1.x适用于IE6 +,因此它适用于IE7。

以下是jQuery UI浏览器支持的链接:https://jqueryui.com/browser-support/

根据该图表,jQuery UI 1.11.x需要IE8或更高版本。

同一页面说明了旧浏览器:

  

虽然jQuery UI可能在旧版浏览器中运行时没有出现重大问题   版本,我们不主动测试jQuery UI,一般来说   不修复可能出现在其中的错误。

因此,您无法保证IE7中的jQuery UI支持。如果您希望我们帮助您准确诊断代码问题,您必须以某种方式包含导致问题的实际代码,以便我们可以运行它并查看是否可以找到解决方法。