为什么我的jQuery代码不适用于Firefox和Chrome?

时间:2011-03-29 20:06:01

标签: jquery firefox google-chrome asp.net-ajax cross-browser

EDITED

嗨,我用的是母版。我在我的项目中使用formsauthentication。我从SQL Server 2005中提取数据。然后在login.aspx中,我从jQuery调用我的pagemethod。毕竟,我在IE9.0,Chrome和Firefox中运行我的项目。该项目是正确的。但是这个jQuery代码只能运行IE9.0。

我的pagemethod,名为LoginService,返回“0”或returnURL,如“user / Default.aspx”,然后我控制这个tah如果LoginService的返回不是“0”,则会运行以下命令:

alert("there isnt error: " + msg.d);

但是,如果出现错误,则会运行:

alert("there is error: " + msg.d);

非常有趣

如果我在IE9中运行此项目,则会显示“没有错误:user / Default.aspx”的消息

但是,

如果我在Chrome或Firefox中运行此项目,则会显示“有错误:未定义”

的消息

如何在所有浏览器中运行此项目?

<script type="text/javascript">
  jQuery(document).ready(function () {
    jQuery("#myContent_login").focus();
    jQuery("#myContent_submit_image").click(function () {
      jQuery("#login_form_spinner").show();
      jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
          if (msg.d != 0) {
            alert("there isnt error: " + msg.d);
          }
        },
        error: function (msg) {
          alert("have error: " + msg.d);
        }
      });
    });
  });
</script>

5 个答案:

答案 0 :(得分:1)

快速观察一下:

的jQuery( 'login_form_spinner')

#前面需要.login_form_spinner

<强>更新

您可以查看here作为示例。请注意,成功和错误功能与您的示例不同。

我可以提供更多帮助,但需要知道具体的错误。

答案 1 :(得分:0)

就像贾斯汀所说的那样,你错过了你的数据对象的点或点也发生了变化

<script type="text/javascript">
jQuery(document).ready(function ($) {
    $("#myContent_login").focus();
    $("#myContent_submit_image").click(function () {
        $('#login_form_spinner').show();
        $.ajax({
            type: "POST",
            url: "Logon.aspx/LoginService",
            data: {
                "username":$("#myContent_login").val(),
                "password":$("#myContent_password").val(),
                "isRemember":$("#myContent_remember_me").is(':checked')
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d != 0) {
                alert("there isnt error: " + msg.d);
                }
            },
            error: function (msg) {
                alert("have error: " + msg.d);
            }
        });
    });
});
</script>

但我怀疑你没有返回json标题或类似的东西

答案 2 :(得分:0)

仔细检查jQuery文档。ajax,您会看到successerror使用不同的参数:

success(data, textStatus, jqXHR)
error(jqXHR, textStatus, errorThrown)

所以你的错误处理程序应如下所示:

error: function (jqXHR, status, error) {
    alert("have error: " + status);
}

成功收到错误消息后,您可以找出导致错误的原因。

答案 3 :(得分:0)

在这一行

jQuery('login_form_spinner').show();

这是帖子或原始代码中的拼写错误吗? 我假设你的选择器缺少一个“#”。由于IE处理这种错误与FF和Chrome不同。您可以跨浏览器获得不同的行为。

答案 4 :(得分:0)

确保从点击处理程序返回false以取消默认提交:

jQuery("#myContent_submit_image").click(function () {

    jQuery('#login_form_spinner').show();
    jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: "{'username': '" + jQuery("#myContent_login").val() + "', 'password': '" + jQuery("#myContent_password").val() + "','isRemember': '" + jQuery("#myContent_remember_me").is(':checked') + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != 0) {
                window.location.replace(msg.d);
            }
        },
        error: function (msg) {
            alert(msg.d);
        }
    });

    return false; // THIS IS VERY IMPORTANT
});

同样清理你的AJAX调用以正确编码参数,如下所示:

jQuery("#myContent_submit_image").click(function () {
    jQuery('#login_form_spinner').show();
    jQuery.ajax({
        type: "POST",
        url: "Logon.aspx/LoginService",
        data: JSON.stringify({
            username: jQuery("#myContent_login").val(), 
            password: jQuery("#myContent_password").val(),
            isRemember: jQuery("#myContent_remember_me").is(':checked')
        }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d != 0) {
                window.location.replace(msg.d);
            }
        },
        error: function (msg) {
            alert(msg.d);
        }
    });

    return false; // THIS IS VERY IMPORTANT
});