返回对jquery验证的非布尔响应

时间:2017-05-26 16:56:57

标签: jquery python ajax django validation

我正在使用jquery验证插件来验证输入表单。在表单中,当用户在一个字段中输入值时,我会对MySQL数据库进行远程检查,如果经过验证,我会使用返回的值来填充其他相关字段。

虽然验证方法针对200显示myfield响应,但由于我将non boolean字符串作为HttpResponse返回,因此表单未提交,但是没有错误消息。一旦我将返回字符串更改为"true",表单就会被提交!

我的问题是验证工作绝对需要的布尔值 因此要提交的表格?

下面如果javascript调用python方法进行远程检查。

...
$(#MyForm).validate{
   ...
   rules:{
     myfield:{
       required: true,
       remote : {
        url: "check_field", // method returns non boolean value, values to populate other fields
        type: "post",
        data : {
          'csrfmiddlewaretoken':token,
           this_field: function(){
           return $('#id_myfield').val()
          }, // end of this_field
        }, // end of data
        complete :function (data) {
          console.log("DATA: ", data);
          var str = data.responseText.split(":"); // parse response
          $('#id_other_field1').val(str[0]); // populate other field 1
          $('#id_other_field2').val(str[1]); // populate other field 2

        }, // end of complete
      },// end of remote
    }, // end of myfield
  }, // end of rules
  ...
}// end of form validate

在django视图中调用的python方法看起来像这样

def check_field(request):
    if request.is_ajax():
        myfield = request.POST.get('myfield')
        # check MySQL database for presence of myfield
        returned_values = some_python_method(myfield)
        if 'absent' in returned_values:
            message = "false"
            return HttpResponse(message)
        else:
            message = returned_values
            return HttpResponse(message, 'application/text')
        ...

0 个答案:

没有答案