Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从异步ajax请求返回值到jQuery验证插件所需的方法_Javascript_Jquery_Ajax_Validation_Jquery Validate - Fatal编程技术网

Javascript 从异步ajax请求返回值到jQuery验证插件所需的方法

Javascript 从异步ajax请求返回值到jQuery验证插件所需的方法,javascript,jquery,ajax,validation,jquery-validate,Javascript,Jquery,Ajax,Validation,Jquery Validate,我使用(JVP)通过ajax执行服务器端验证。除了一件事之外,一切都很好:JVP无法对空白字段执行远程验证 我不介意对具有简单状态验证的属性使用默认规则required:true。但有时我的模型中有复杂的逻辑,我希望将其保留在服务器端 所以问题是:我不能强迫JVP通过其内置的远程ajax方法验证空白字段。但是我可以在他的required方法中使用函数(结果应该是true或false): 所以我决定在这个函数中使用异步ajax请求,但是我不能从异步ajax调用返回值。我试图使用回调,但无法使其工作

我使用(JVP)通过ajax执行服务器端验证。除了一件事之外,一切都很好:JVP无法对空白字段执行远程验证

我不介意对具有简单状态验证的属性使用默认规则
required:true
。但有时我的模型中有复杂的逻辑,我希望将其保留在服务器端

所以问题是:我不能强迫JVP通过其内置的远程ajax方法验证空白字段。但是我可以在他的
required
方法中使用函数(结果应该是true或false):

所以我决定在这个函数中使用异步ajax请求,但是我不能从异步ajax调用返回值。我试图使用回调,但无法使其工作,我坚持与这个问题。这是我的代码(咖啡脚本):

我检查了所有发送到服务器的数据和来自服务器的响应,一切正常。
JVP的
required
方法不等待响应,始终得到
true
的问题。如何从
success
ajax请求返回值给他?

与其编写自己的异步验证方法,不如尝试使用
remote
方法

文件是

还有,看看这个

类似的东西(对不起,我的咖啡脚本有点生疏)。您可能需要稍微调整一下
数据
选项,以使其正确,但我认为这是您需要做的一般想法

$('#my_form').validate(
  rules:
    'email[email]':
    remote: 
      url: validate_url,
      type: "post",
      data:
          email: () ->
              $(".email_container").val()
)

响应是
true
,我用断点检查了
如果响应==true | | response==“true”
true
,函数返回
false
,但为时已晚-
required
方法已经得到了
true
您所说的“验证空白字段”是什么意思?是否需要一个空白字段?如果是空的,为什么需要服务器来告诉您这一点?
remote
方法不会在空白字段上触发,但我需要在服务器端验证它们。为什么需要服务器验证字段是否为空?您是否可以将
required
添加到规则中,以便验证它是否存在客户端,然后任何特殊业务规则都可以保留在服务器上,以便通过
remote
方法进行检查?只向服务器发出验证字段是否为空的请求效率极低。与其验证空字段,不如理解如何获取此值。)我认为你无法按照你尝试的方式来做你正在做的事情。
required
函数只提供
元素
对象。如果它支持异步验证,它还将传入一个
回调
对象。如果这个问题不止这些,那么我在这一点上完全迷失了方向。
validate_url = '/emails/validate'

required_validate = (e, callback) ->
  data = {}
  data[e.name] = $(e).val()
  $.ajax(
    url: validate_url
    type: 'post'
    dataType: 'json'
    data: data
    success: (response) ->
      callback(response)
  )

$('#my_form').validate(
  rules:
    'email[email]':
      required: (element) ->
        required_validate(element, (response) ->
          if response == true || response == "true"
            false
          else
            true
        )
)
$('#my_form').validate(
  rules:
    'email[email]':
    remote: 
      url: validate_url,
      type: "post",
      data:
          email: () ->
              $(".email_container").val()
)