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>
答案 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,您会看到success
和error
使用不同的参数:
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
});