2017-11-12 4 views
0

Ich bin sehr grün, wenn es um die Front-End-Entwicklung geht, versuche ich Daten mit Modal einfügen, habe ich zwei Textfelder, die erste ist Code und die zweite ist Name .. Ich brauche sie einzigartig sein:undefined Antwort, Ajax funktioniert nicht?

$.validator.addMethod("codeNotUsed", function (value, element) { 
        var response; 
        $.ajax({ 
         type: "POST", 
         url: "Profile_ValidatieProfileCode.ashx", 
         data: { code: $('#txtCode').val() }, 
         async: false, 
         success: function (data) { 
          response = eval(data); 
         } 
        }); 
        alert(response); 
        return response; 

       }, "Code already used"); 

$.validator.addMethod("nameNotUsed", function (value, element) { 
        var response; 
        $.ajax({ 
         type: "POST", 
         url: "Profile_ValidateProfileName.ashx", 
         data: { name: $('#txtName').val() }, 
         async: false, 
         success: function (data) { 
          response = eval(data); 
         } 
        }); 

        return response; 

       }, "Name already used"); 

der Inhalt eines der .ashx Dateien:

Imports System.Web 
Imports System.Web.Services 

Public Class Profile_ValidateProfileName 
Implements System.Web.IHttpHandler 

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 

    context.Response.ContentType = "text/plain" 

    Dim name = context.Request.Form("name") 

    Try 
     Dim type = DataFactory.Instance.GetProfileByName(UserIdentity.ClientConfig.ConnectionString, name) 

     If IsNothing(type) Then 
      context.Response.Write("true") 
     Else 
      context.Response.Write("false") 
     End If 

    Catch ex As Exception 
     context.Response.Write("false") 
    End Try 


End Sub 

ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable 
    Get 
     Return False 
    End Get 
End Property 

End Class

HTML-Code:

<form id="InputForm" name="InputForm" action="javascript:void(0);" novalidate="novalidate"><div id="InputFormContent"> 
     <br> 
     <div class="row"> 
      <div class="col-xs-12"> 
       <div class="form-group"> 
        <label>Code</label> 
        <div class="icon-addon"> 
         <input id="txtCode" name="txtCode" class="form-control required" maxlength="10"> 
         <i class="fa fa-edit"></i> 
        </div> 
       </div> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="col-xs-12"> 
       <div class="form-group"> 
        <label>Name</label> 
        <div class="icon-addon"> 
         <input id="txtName" name="txtName" class="form-control required" maxlength="30"> 
         <i class="fa fa-edit"></i> 
        </div> 
       </div> 
      </div> 
     </div> 

    </div> 

Die einzigartige Validierung nicht funktioniert und ich, was die Ajax-Code ist nicht gut funktioniert, gibt der Alarm me ‚Nicht definiert‘ ..

+0

Mögliche Duplikat [Warum ist die Variable unverändert, nachdem ich es innerhalb einer Funktion ändern? - Asynchrone Code-Referenz] (https://stackoverflow.com/questions/23667086/why-is-my-variable-unterned-after-i-modify-it-inside-of-a-function-asynchron) – Xufox

Antwort

0

die Warnung Anweisung ausgeführt wurde, bevor Erfolgsfunktion auch genannt wird, nachdem die Warnung Anweisung ausführen Ajax-Anforderung erfolgt arbeitet in diesem Fall besser: Der Code:

$.validator.addMethod("codeNotUsed", function (value, element) { 

        var response; 
        $.ajax({ 
         type: "POST", 
         url: "Profile_ValidatieProfileCode.ashx", 
         data: { code: $('#txtCode').val() }, 
         async: false, 
         error: function (xhr, status, error) { 
          alert(error) 
         } 
        }).done(function (data) { 
         response = eval(data); 
         alert(response); // this will give true or false accourding to server response 
        }); 
        return response; 


       }, "Code already used"); 

       $.validator.addMethod("nameNotUsed", function (value, element) { 


         var response; 
         $.ajax({ 
          type: "POST", 
          url: "Profile_ValidateProfileName.ashx", 
          data: { name: $('#txtName').val() }, 
          async: false, 
          error: function (xhr, status, error) { 
           alert(error) 
          } 
         }).done(function (data) { 
          response = eval(data); 
          alert(response); // this will give true or false accourding to server response 

         }); 

         return response; 
        }, "Name already used"); 
0

Ihre Berufung Ajax ungültig ist, weil Sie Ajax-Aufruf müssen ersten und nach fertig, überprüfen & .validator.addMethod führen und rufen

$.ajax({ 
    type: "POST", 
    url: "Profile_ValidatieProfileCode.ashx", 
    data: { code: $('#txtCode').val() } 
}).done(function (data) { 
    var response = eval(data); 
    alert(response); 
    $.validator.addMethod("codeNotUsed",function (value, element) { return response;}, "Code already used"); 
}); 

$.ajax({ 
    type: "POST", 
    url: "Profile_ValidateProfileName.ashx", 
    data: { name: $('#txtName').val() } 
}).done(function (data) { 
    var response = eval(data); 
    alert(response); 
    $.validator.addMethod("nameNotUsed",function (value, element) { return response;}, "Name already used"); 
});