我正在使用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')
...