如何处理jQuery ajax帖子的结果

时间:2010-01-13 23:40:20

标签: asp.net asp.net-ajax jquery

我在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="&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;
}

1 个答案:

答案 0 :(得分:1)

嗯,我不认为这会以通常的方式发挥作用。 AJAX请求是异步的,因为只有一个UI线程,您无法阻止它等待它。提供给ASP.NET的验证功能必须是同步的。

如果你可以在验证发生时延迟并尽早启动AJAX请求,你可以破解它的工作。但在这种情况下,我会说只是使用服务器端验证,因为客户端验证无论如何都要点击服务器。