У меня есть одна кнопка изображения с событиями OnClientClick и OnClick.
<asp:ImageButton ImageUrl="./../../images/login.gif" Style="margin-right: 153px;"
runat="server" OnClientClick="return SendLoginData();" OnClick="Login_Click" />
OnClientClick, я называю некоторую функцию на стороне клиента SendLoginData(), где я использовал $ .post() функцию.
function SendLoginData() {
var flagLogin = "0";
if (LoginValidation() != false) {
$.post(window.location,
{
LOGIN: "LOGIN",
UserName: $.trim($('#txtUserNameLogin').val()),
Password: $.trim($('#txtPasswordLogin').val())
},
function (data) {
var d = $(data).find('#<%=lblMessageLogin.ClientID %>');
if ($(d).html() == "SUCCESS") {
flagLogin = "1";
}
else {
$('#lblErrorMsgLogin').html(d.html());
}
}
);
}
//alert(flagLogin);
if (flagLogin == "1") {
return true;
}
else {
return false;
}
}
Afer $ .post() Когда я получаю ответ, как «УСПЕХ», я хочу, чтобы вернуть верную сторону клиента функции SendLoginData. Так что моя серверная сторона onClick может работать.
Но я столкнулся с одной проблемой. Вы можете видеть, что есть одно предупреждение, которое прокомментировано (// alert (flagLogin);).
Если я раскомментирую предупреждение, то работает условие (flagLogin == "1"). тогда как если бы я оставил предупреждение как комментарий, то if (flagLogin == "1") не работает.
Может кто-нибудь объяснить, как я могу справиться с этой ситуацией и в чем причина этого?
Код после '$ .post' выполняется перед кодом в обратном вызове' $ .post'. Рассмотрите возможность чтения руководств по AJAX. – Esailija
Другие проблемы с безопасностью также см. В моем ответе (последнее редактирование) – Cranio