2012-08-06 72 views
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; 
       }       

      } 
     }); 

    }); 
}); 

enter image description here

+1

**什么?**我非常困惑....使用此代码的 – Neal 2012-08-06 15:20:33

+0

,只有当此成功回调执行时(当它从服务器页面获得响应时),警报才会到来 – Shyju 2012-08-06 15:21:01

+0

相信我当我提交形式我突然得到警报,而警报是在我的屏幕上时,我可以看到ajax调用仍然没有完成,当我点击确定的警报响应部分是空的,然后我看到回应 – 2012-08-06 15:23:10

回答

0

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

要确认,您可以编辑您的成功处理程序记录响应:通过阻断HTML动作

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拒绝访问给用户,不会由于AJAX的异步特性而工作。

0

当请求完成时调用success函数。

成功(数据,textStatus,jqXHR)功能,阵列

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

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

相关问题