我有这个ajax函数,它可以验证用户提供的密钥。但是警报出现在ajax响应之前,因此,如果用户提供了错误的密钥,甚至可以获得访问权限
$(document).ready(function() {
$('#submit').click(function(e) {
e.preventDefault();
var key = $('#downloadkey').val();
var dataString = {KEY:key};
$.ajax({
url: "/mediabox/home/validate_key",
type: 'POST',
data: dataString,
success: function(msg) {
if(msg=="true")
{
alert("do something");
}
else
{
alert("Your download key is either wrong or you didn't provide it.");
return false;
}
}
});
});
});

发布于 2012-08-06 23:21:10
是什么让你相信警报是在响应之前到来的?只有在客户端成功接收到响应后,才会调用成功处理程序。
要进行确认,您可以编辑成功处理程序以记录响应:
success: function(msg) {
console.log(msg);
if(msg=="true")
{
alert("do something");
}
else
{
alert("Your download key is either wrong or you didn't provide it.");
return false;
}
}此外,如果您使用return false通过阻止HTML操作来拒绝用户访问,由于AJAX的异步特性,这将不起作用。
发布于 2012-08-06 23:21:28
当请求完成时,将调用success函数。
数据成功(
,textStatus,jqXHR)函数,请求成功时调用的数组函数。该函数传递了三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;以及jqXHR (在jQuery 1.4.x,XMLHttpRequest中)对象。从jQuery 1.5开始,成功设置可以接受一组函数。每个函数将被轮流调用。这是一个Ajax事件。
只有在AJAX请求完成后,成功处理程序中的代码才会执行。如果您事先收到了警报,则表明请求已正确完成。
https://stackoverflow.com/questions/11831103
复制相似问题