jquery.validate ошибка addMethod отображает, даже если истина сохраняется - PullRequest
0 голосов
/ 13 января 2011

Я использую дополнительный метод проверки валидации капчи с помощью jquery.validate

 $.validator.addMethod("ajax_validation", function(value) {
  var ajax_data='ajax_mode=capcha_validation&code='+value;
   $.ajax({
      type: "POST",
      url: "/app/ajax_validation/",
      data: ajax_data,
      dataType: "text",
      success: function(msg){
    if(msg=='true')
    {
     alert('true');
     return true;
    }
    else
    {
     alert('false');
     return false;
    }

      }
   });
 }, 'Please enter code correctly!');

Даже когда я сохраняю истинное значение, на экране всегда отображается сообщение об ошибке.

1 Ответ

2 голосов
/ 13 января 2011

Если вы хотите поймать результат и пойти дальше, вам нужно вызвать jquery ajax в формате синхронизации. В вашем коде, каким бы ни был результат, происходит поведение по умолчанию (которое, я думаю, должно быть сообщением об ошибке).

Не забывайте, что вызов jQuery Ajax является асинхронным по умолчанию («A» из «Async» является асинхронным), и если вы хотите выполнить ajax-вызов синхронно, вам нужно включить его в «false», например: /> (Я поставил ваш метод в отдельную функцию для ясности)

    function ajax_validation(ajax_data) {
          var ajax_data='ajax_mode=capcha_validation&code='+value;          
          var result;
          $.ajax({
              type: "POST",
              async: false,
              url: "/app/ajax_validation/",
              data: ajax_data,
              dataType: "text",
              success: function(msg){
                     result= msg.d;
               }  
           });
           return result; 
    }     
        //...

Однако учтите, что вызовы ajax Sync могут заморозить браузер и, как правило, не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...