1

我有一个带有链接的 cshtml 页面和一个显示一些内容的 div。

<a href="#" onclick="Show_New_Page('#First_Div')>My Link</a>

<div id="First_Div">
    @Html.Partial("General_Page") <- This is the default page that gets displayed on load.
</div>

当您单击该链接时,将调用 JavaScript 函数 Show_New_Page 并将字符串“#First_Div”作为参数传递。我通过我希望 Show_New_Page 中的 ajax 的 div 的名称来放置其成功值。该函数如下所示:

function Show_New_Page(div) {
    $.ajax(
    {
        type: "POST",
        url: url, //Declared above globally, unimportant
        data: data, //Declared above globally, unimportant
        success: function (result) {
            $(div).html(result);
        }
    });
}

当您在 Internet Explorer 中单击此链接时,新页面会正常显示,没有任何问题。但是,当您在 FireFox 中单击此链接时,整个页面将变为白色,并且无法成功加载。

有很多关于 Ajax 和不同浏览器问题的帖子,但我找不到对我有帮助的帖子。非常感谢我可以尝试的任何提示或技巧。我非常不确定为什么会发生这种情况,所以如果我遗漏了任何信息,我一定会尽力提供。

4

2 回答 2

1

调用函数)时似乎缺少关闭。Show_New_Page此外,建议从单击处理程序返回 false 以取消默认操作:

<a href="#" onclick="Show_New_Page('#First_Div'); return false;">My Link</a>

此外,您可能更愿意给这个锚点一个 id:

<a href="#" id="myLink" data-id="#First_Div">My Link</a>

然后在一个单独的文件中不显眼地 AJAXify 以避免将标记与 javascript 混合:

$(function() {
    $('#myLink').click(function() {
        $.ajax({
            type: 'POST',
            url: url, //Declared above globally, unimportant
            data: data, //Declared above globally, unimportant
            context: { id: $(this).data('id') },
            success: function (result) {
                $(this.id).html(result);
            }
        });
        return false;
    });
});
于 2013-02-26T15:29:47.587 回答
0

这里的问题是,我在单击链接后传递的 ajax 视图正在使用 document.write() 语句。我了解到在页面已经加载后这样做很奇怪。我已将这些语句移至未使用 ajax 加载的文件中,从而解决了问题。感谢所有给我评论和建议的人。正是对这些想法的调查将我引向了核心问题!

教训:小心 firefox 中过多的 document.write() 语句!

于 2013-02-28T14:50:42.500 回答