3

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

所以我有这个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/

4

2 回答 2

7

我最终弄清楚了。返回成功是我失败的原因——我一直在返回、返回 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;
        }

    }
}
于 2012-05-25T13:09:58.203 回答
0

看看有效值

我发现它很容易集成、调整(自定义验证、自定义警报),并且像这里一样将它放入 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");
        }
    });

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

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

于 2012-05-22T21:13:31.040 回答