JSON Неверный ярлык - PullRequest
       5

JSON Неверный ярлык

0 голосов
/ 05 апреля 2011

Я пытаюсь использовать Jquery Validate и вызываю веб-сервис для проверки поля. Но когда я делаю это, я получаю ошибку Firebug:

неверный ярлык { "D" ложь}

Вот мой код, кто-нибудь может помочь?

$("form").validate({
         //errorLabelContainer: $("#divErrors"),

             rules: {
                 txtUserName: {
                     required: true,
                     minlength: 4,
                     maxlength: 20,
                     remote: function() {
                         var r = {
                             type: "POST",
                             url: "/Services/CDServices.asmx/CheckForUniqueUserName",
                             contentType: "application/json; charset=utf-8",
                             dataType: "json",
                             data: "{'strUserName':'" + $('input[name="txtUserName"]').val() + "'}"
                         }
                         return r;
                     }
                 }

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public bool CheckForUniqueUserName(string strUserName)
    {
        return false;
    }

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

В ASP.NET сервер возвращает .d в качестве префикса возвращаемых данных.Посмотрите на этот простой пример:

  $.ajax({
    type: "POST",
    url: "RSSReader.asmx/GetRSSReader",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      // Hide the fake progress indicator graphic.
      $('#RSSContent').removeClass('loading');

      // Insert the returned HTML into the <div>.
      $('#RSSContent').html(msg.d);
    }
  });

Дополнительную информацию можно прочитать на http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

1 голос
/ 05 апреля 2011

В вашем случае вы можете использовать функцию dataFilter, чтобы "развернуть" ваш результат, например так:

$("form").validate(
  //errorLabelContainer: $("#divErrors"),
  rules: {
    txtUserName: {
      required: true,
      minlength: 4,
      maxlength: 20,
      remote: function() {
        var r = {
          type: "POST",
          url: "/Services/CDServices.asmx/CheckForUniqueUserName",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          data: "{'strUserName':'" + $('input[name="txtUserName"]').val() + "'}",
          dataFilter: function (data, dataType) {
            if (dataType == "json") {
              var result = $.parseJSON(data);
              if (result.d) {
                return result.d;
              } else {
                return data;
              }
            } else {
              return data;
            }
          }
        }
        return r;
      }
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...