jquery验证 - addMethod / remote - json响应中的错误消息

时间:2012-05-22 18:35:05

标签: jquery json jquery-validate

我正在尝试使用远程方法,或者添加一个模仿远程方法的方法,以便能够将输入的数据发送到Web服务并获取带有错误状态和错误消息的json响应。 / p>

所以我有这个json的回复:

{
    "isError": "true",
    "errorMessage": "The User Name you chose is already in use. Please enter another name."
}

我使用远程方法获取真/假响应,但不使用额外数据。

任何帮助都将不胜感激。

修改

试过这个,但当然它没有用,因为变量不是一个全局变量...

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

      $.ajax({
        type: "POST",
         url: "js/username.json",
         contentType: "application/json; charset=utf-8",  
        dataType:"json",
        data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}", 
        dataFilter: function(data) {
            var isError = data.isError;
            var uniqueError = data.errorMessage;
            if(isError == "true"){
                return false;
            }
        }

     })

}, uniqueError); //this last line would typically be: }, "my error message");

看小提琴: http://jsfiddle.net/jasonday/fWk5u/

2 个答案:

答案 0 :(得分:6)

我最终搞清楚了。返回成功是我失败的原因 - 我一直在返回,返回true或返回false - 并且每个人都会“失败”验证。

remote: {
    type: "POST",
    url: "js/username.json",
    contentType: "application/json; charset=utf-8",  
    dataType:"json",
    data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}",
    dataFilter: function(data) {
        var json = JSON.parse(data);
        if(json.isError == "true") {
            return "\"" + json.errorMessage + "\"";
        } else {
            return success;
        }

    }
}

答案 1 :(得分:1)

看看validval

我发现集成,调整(自定义验证,自定义警报)相当容易,还可以像AJ here

那样将其搞砸到AJAX中

修改
那么你将数据对象发布到哪里? js / username.json 做什么? 如果你在那里发布,你必须在那里做一些事情以所需的格式返回对象。

因此,如果您想查看唯一的电子邮件,我会发布到服务器,在那里进行检查,构建一个对象

 object.response.success = true/false
 object.response.data = "some text to display"

然后通过AJAX返回object.response。

像这样:

 $.ajax({
      async: false,
      type: "post",
      url: "somewhere_to_handle_username_check",    
      data: data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      // AJAX OK, return true/false
      success: function(objResponse){
           if (objResponse = "true"){
                alert("success");
            } else {
                alert("failed, username already taken");
            }
      // AJAX Failed
      error: function () { 
        alert("failed - AJAX failed");
        }
    });

我通常会验证客户端,输入了一个电子邮件地址(使用上面的validaval),然后将电子邮件地址发送到服务器以检查值并构建响应对象。

希望这会有所帮助。如果没有,请告诉我你的AJAX请求应该做什么以及js / username.json做什么。