嵌套div中的Ajax调用不适用于带有MVC3的FireFox

时间:2013-02-26 15:26:15

标签: javascript ajax asp.net-mvc-3 firefox

我有一个带有链接的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和不同浏览器问题的帖子,但我无法看到一个帮助我的帖子。我可以尝试任何提示或提示非常感谢。我不确定为什么会发生这种情况,所以如果我遗漏了任何信息,我一定会尽力提供。

2 个答案:

答案 0 :(得分: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>

然后在一个单独的文件中不引人注意地AJAX化它以避免使用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;
    });
});

答案 1 :(得分:0)

这里的问题是我点击链接后传递的ajax视图使用的是document.write()语句。我已经知道在页面加载后这很奇怪。我已将这些语句移到未加载ajax的文件中,并修复了问题。感谢所有评论并向我提出建议的人。正是对这些想法的调查才引出了我的核心问题!

上一课:小心firefox中过多的document.write()语句!