2010-01-13 7 views
0

asp:CustomValidator 컨트롤에서 사용하는 javascript 함수에서 jQuery 아약스 게시물을 만들고 있습니다. 웹 메서드는 부울을 반환합니다. 유효성 검사 스크립트가 올바르게 작동하도록 결과를 변환하려면 어떻게해야합니까?jQuery 아약스 게시물의 결과 처리 방법

클라이언트 측 코드

<script language="javascript" type="text/javascript"> 
function ValidateInput(source, args) { 
    if($('#MyTxtBox').val().length > 0) { 
     var result; 
     var webMethod = 'http://domain/webservice.asmx/ValidateInput'; 
     var parameters = "{'input':'" + $('#MyTxtBox').val() + "'}"; 

     $.ajax({ 
      type: "POST", 
      url: webMethod, 
      data: parameters, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) {    
       args.IsValid = msg.d; 
      } 
     }); 
    } 
    else { 
     args.IsValid = false; 
    } 
} 
</script> 
<asp:TextBox ID="MyTxtBox" runat="server" /> 
<asp:CustomValidator ID="cvCreditCardNumber" runat="server" ClientValidationFunction="ValidateCCNumber" Display="Dynamic" 
ErrorMessage="&nbsp;Please enter valid input." /> 

웹 서비스 코드

[WebMethod] 
[ScriptMethod(ResponseFormat=ResponseFormat.Json)] 
public bool ValidateInput(string input) 
{ 
    if(input.Equal("jQuery is awesome!")) 
     return true; 
    else 
     return false; 
} 
+0

웹 서비스에서 결과를 WriteLn하고 정상적인 기능처럼 ** return **을 사용하지 않아야한다고 생각합니다. – Steven

+0

@Steven - 어떻게 성취합니까? –

답변

1

그럼 난이 일반적인 방식으로 작동하는 것입니다 생각하지 않습니다. AJAX 요청은 비동기 적이며 UI 스레드가 하나뿐이기 때문에 기다릴 수 없습니다. ASP.NET에 제공된 유효성 검사 기능은 동기되어야합니다.

유효성 검사가 지연되고 AJAX 요청을 일찍 시작하면 해킹이 가능합니다. 그러나이 경우 클라이언트 측 유효성 검사가 서버를 때리는 것처럼 서버 측 유효성 검사를 사용한다고 가정합니다.

+0

@Frank - 앞으로 가서 모든 ajax 기능을 제거하고 asp : RequiredFieldValidator 컨트롤로 교체했습니다. 내 인생을 더 편하게 ... –

+0

async : false를 $ .ajax() 호출에 추가하면 제대로 작동합니다. –

+0

동기식 AJAX? 가능하다는 것을 깨닫지 못했다. 서버 측 유효성 검사를하는 것이 더 좋습니다. –

관련 문제