我在asp:CustomValidator
控件使用的javascript函数中创建了一个jQuery ajax帖子。 Web方法返回一个布尔值。如何转换结果使验证脚本正常运行。
客户端代码
<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=" 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 :(得分:1)
嗯,我不认为这会以通常的方式发挥作用。 AJAX请求是异步的,因为只有一个UI线程,您无法阻止它等待它。提供给ASP.NET的验证功能必须是同步的。
如果你可以在验证发生时延迟并尽早启动AJAX请求,你可以破解它的工作。但在这种情况下,我会说只是使用服务器端验证,因为客户端验证无论如何都要点击服务器。