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 重定向的主要内容,如果未能解决你的问题,请参考以下文章