jQuery表单序列化 – 只返回一个空字符串

我没有从序列化我的html表单中获取任何数据。 这是表格

这是jquery

 jQuery(document).ready(function(){ $("#basicForm").validate({ submitHandler: function (form) { var request; var $form = $(this); var $inputs = $form.find("input, select, button, textarea"); var serializedData = $form.serialize(); alert (serializedData); <==empty $inputs.prop("disabled", true); request = $.ajax({ url: "./ajax/login.php", type: "post", data: serializedData }); request.done(function (response, textStatus, jqXHR) { // log a message to the console console.log("Hooray, it worked!"); alert(response); //window.location.replace("success.php"); }); } }); //validate });//ready  

表单中的数据未序列化。 我得到一个空警报框。 同样在ajax页面上我回发到i print_r $ _post数组并得到:Array()

我已经检查了表单元素的名称,这似乎是常见的问题。 我正在使用这个jquery版本

validation工作正常。 这也有效

 var x = $("#id_username").val(); var y = $("#id_password").val(); request = $.ajax({ url: "./ajax/login.php", type: "post", //data: serializedData data : { username : x, password: y } 

提前感谢您提供的任何帮助

你在这里打破它……

 submitHandler: function (form) { ... var $form = $(this); // <- '$(this)' is meaningless ... var serializedData = $form.serialize(); ... 

在此上下文中没有$(this) ,因此$form是空的。

由于表示对象的form参数已由开发人员提供,因此该版本工作正常...

 submitHandler: function (form) { var serializedData = $(form).serialize(); ... 

工作演示: http : //jsfiddle.net/gpaf8187/

注意 :您还需要在元素中使用type="submit" ,否则validation插件将不会选择此事件。