0

我有这个验证用户提供的密钥的 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;
                }                        

            }
        });

    });
});

在此处输入图像描述

4

2 回答 2

0

是什么让您相信警报会在响应之前到来?只有在客户端成功接收到响应后才会调用成功处理程序。

要确认,您可以编辑成功处理程序以记录响应:

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-06T15:21:09.887 回答
0

请求完成时调用success函数。

成功(数据,文本状态,jqXHR)函数,数组

请求成功时调用的函数。该函数获得三个参数: 从服务器返回的数据,根据 dataType 参数格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象。从 jQuery 1.5 开始,success 设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

成功处理程序中的代码只会在 AJAX 请求完成后执行。如果您事先收到警报,则表明请求已正确完成。

于 2012-08-06T15:21:28.030 回答