jQuery ajax 调用后 IE 7 重定向

Posted

技术标签:

【中文标题】jQuery ajax 调用后 IE 7 重定向【英文标题】:IE 7 redirecting after jQuery ajax calls 【发布时间】: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() 请求,但重定向仍然相同。

【问题讨论】:

【参考方案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();
);

【讨论】:

以上是关于jQuery ajax 调用后 IE 7 重定向的主要内容,如果未能解决你的问题,请参考以下文章

如果会话超时,如何在 MVC 中的 jquery ajax 调用后重定向到新页面?

重定向 Ajax Jquery 调用

本机 ajax 调用不会在 302 上重定向

在 jquery Ajax 调用期间页面重定向到上一页

jQuery ajax 帖子不会重定向到 php 页面

JQuery Ajax 在不设置 cookie 的情况下自动重定向?