【问题标题】:IE 7 redirecting after jQuery ajax callsjQuery ajax 调用后 IE 7 重定向
【发布时间】:2010-09-15 18:55:05
【问题描述】:

我的文件中有以下代码,用于从 AJAX 调用加载带有 HTML 的 div:

$('#searchButton').click( function() {
    $('#inquiry').load('/search.php?pid=' + $('#searchValue').val());
});

这在 Firefox 和 Google Chrome 中运行良好,但每当我在 IE 中进行搜索时,我都会被重定向回 index.php。我从 Firebug 中获取 URL 并将其粘贴到 IE 中,并且没有发生重定向,我只是得到了应该返回的输出。

我还尝试将其更改为 $.get() 请求和完整的 $.ajax() 请求,但重定向仍然相同。

【问题讨论】:

    标签: jquery ajax internet-explorer-7


    【解决方案1】:

    IE 以不同方式处理默认事件(也请注意在文本字段中按回车键)。 IE 导致某些默认事件处理程序触发。如果 searchButton 是 HREF 为 "" 的链接,它将重新加载当前页面。您可以尝试将 href 设置为“javascript:void(0)”或执行以下操作:

    $('#searchButton').click( function(e) {
        $('#inquiry').load('/search.php?pid=' + $('#searchValue').val());
        e.preventDefault();
    });
    

    【讨论】:

      【解决方案2】:

      更多乐趣。我将输入文本和按钮包装在这种形式中:

      <form onSubmit="return false;">
      [HTML]
      </form>
      

      而 IE 似乎忽略了返回 false。我尝试将 jQuery 函数修改为像史蒂夫的一样,但它仍然刷新不正确。

      我删除了表单标签并处理了它。

      【讨论】:

      • 至少在 XHTML 中它是小写的onsubmit。除此之外,最好通过 javascript 来完成 - 请参阅史蒂夫的回答。除此之外,删除表单标签会导致 HTML 无效。这是一件坏事。
      【解决方案3】:

      将表单的 action 属性设置为 javascript 函数(例如您的搜索处理函数)或“return false”

      当您按下回车键时,MSIE 正在触发表单操作

      【讨论】:

        【解决方案4】:

        您的函数应返回 false 以阻止按钮的提交操作。不过,我不知道 jQuery 是如何处理的。

        【讨论】:

          【解决方案5】:

          你应该像下面这样防止默认..

          var searchbutton = $('#searchButton');
          var inquirysearchvalue = $('#inquiry').load('/search.php?pid=' + $('#searchValue');
          
          searchbutton.click( function(e) {
              inquirysearchvalue.val());
              e.preventDefault();
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-25
            • 1970-01-01
            • 1970-01-01
            • 2013-08-08
            • 2018-04-30
            • 1970-01-01
            • 1970-01-01
            • 2014-08-26
            相关资源
            最近更新 更多