我正在使用以下函数来验证并将数据发送到php服务器:
$(document).ready(function () {
$(function() {
// Setup form validation on the #register-form element
$("#register_form").validate({
// Specify the validation rules
rules: {
register_username: "required",
register_password: "required",
register_email: {
required: true,
email: true
},
register_confirm_password: {
required: true,
equalTo: '#register_password'
},
},
// Specify the validation error messages
messages: {
register_username: "Please enter your username",
register_password: "Please enter your password",
register_confirm_password: {
required: "Please provide a password",
equalTo:"Please enter password same as above."
},
register_email: "Please enter a valid email address",
},
submitHandler: function(form) {
var pdata = $(this).serialize();
alert(pdata);
$.ajax({
type: 'POST',
url: 'http://localhost/quiz/index.php/signin',
data: $(this).serialize(),
dataType : 'json',
success: function(data) {
if (data.success){
console.log("Form is submitted.data is" + data.success);
$.each(data, function() {
$.each(this, function(k, v) {
console.log("key; " + k);
console.log("value; " + v);
});
});
}
else
{
console.log("The data returned is:" + data.success);
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
return false;
},
});
});
});
所有验证都有效,但问题在于:
var pdata = $(this).serialize();
我得到空的pdata:
alert(pdata);
我不知道为什么这里没有序列化数据。请帮我解决这个问题。
答案 0 :(得分:1)
不要序列化$(这个) 请尝试序列化表单。
$( "#register_form" ).serialize();
答案 1 :(得分:0)
$(this)
不再是你认为的了。它不是#register_form
,而是submitHandler
函数。
如果你console.log(pdata)
,你应该在控制台中看到功能定义。
答案 2 :(得分:0)
submitHandler
函数的范围不是form
元素,因此this
不指向您需要的元素。但它确实为您提供了一个名为form
的参数,您可以使用该参数,如下所示:
submitHandler: function(form) {
$.ajax({
type: 'POST',
url: 'http://localhost/quiz/index.php/signin',
data: $(form).serialize(),
// your code...