Jquery压倒全球价值

时间:2014-01-29 01:34:02

标签: c# javascript jquery asp.net-mvc kendo-ui

我正在使用kendo ui,我不想在我的数据库中重复记录,所以我正在做的是使用kendo网格的.Save函数检查记录,如果存在然后返回false,这工作正常,但当我返回返回false然后它仍然保存记录。

function onSave(e) {

         var currentValueForSend = $("[name=RegisterNo]").val();
         alert(currentValueForSend);
         $.ajax(
      {
          url: '/StudentTransaction/CheckRegistrationNumber',
          type: "POST",
          data: { 'RegisterNumber': currentValueForSend },
          success: function (data) {
              alert(data.CurrentRegNo);
              if( data.CurrentRegNo.indexOf('true') >= 0){
                  alert("no duplicate records");
 return false;;
              }

          }
      });

     }

我还定义了一个覆盖值的全局值,但我无法覆盖值

function onSave(e) {
     var status;
     var currentValueForSend = $("[name=RegisterNo]").val();
     alert(currentValueForSend);
     $.ajax(
  {
      url: '/StudentTransaction/CheckRegistrationNumber',
      type: "POST",
      data: { 'RegisterNumber': currentValueForSend },
      success: function (data) {
          status = data.CurrentRegNo;

      }
  });

  if (status.indexOf('true') >= 0)) {
      e.preventDefault();
      alert("Duplicates not allowed");
      return false;
  }
 }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是由于这些请求的异步性质。

您的代码中描述的序列是:

  1. 提出请求
  2. 检查状态是否为真
  3. 得到回复
  4. 您需要使用函数回调来正确处理此问题。尝试这样的事情:

    function onSave (e){
      var currentValueForSend = $("[name=RegisterNo]").val();
      alert(currentValueForSend);
    
      $.ajax({
        url     : '/StudentTransaction/CheckRegistrationNumber',
        type    : "POST",
        data    : { 'RegisterNumber': currentValueForSend },
        success : afterSave
      });
    }
    
    function afterSave (data){
      var status = data.CurrentRegNo;
      if (status.indexOf('true') >= 0)) {
          e.preventDefault();
          alert("Duplicates not allowed");
          return false;
      }
    }