如何序列化包含jQuery ajax加载字段的表单?

时间:2015-11-26 16:18:49

标签: javascript jquery ajax forms

这是主要形式:

<div>
     <form method="post" class="register" id="wiz-config">
        <!-- HTML -->
        <input type="radio" value="187" name="group-1" id="product-187" class="aselector" >
        <input type="radio" value="188" name="group-1" id="product-188" class="aselector" >
        <!-- HTML -->
        <!-- Other ajax fields -->

     </form>
</div>

其他ajax字段通过ajax加载。

问题在于,如果我使用

jQuery( document ).ready(function() {
var str = jQuery( "#wiz-config" ).serialize();
console.log(str);
});

它返回的是&#34;空&#34;。为什么呢?

3 个答案:

答案 0 :(得分:2)

您只是忘了放the selector #

$( "#wiz-config" ).serialize();

答案 1 :(得分:2)

您的jQuery选择错误。您需要#,因为您尝试按ID进行选择。

$("#wiz-config" ).serialize();
  

ID选择器(“#id”):选择具有给定ID的单个元素   属性。

或者如果您的页面中只有一个表单,您也可以尝试使用此表单

var _form = $("form");
console.log(_form);
var serializedVersion = _form.serialize();

编辑:根据评论,您没有获得动态添加的表单元素。我能想到的唯一原因是,您可能没有给这些动态添加的表单元素赋予name属性及其值。 serialize方法仅序列化具有有效name属性的元素。

以下应该没有任何问题。

$(function(){

   var newItems="<input name='place' type='text' />";

   $("#wiz-config").append(newItems);

});

Here是一个工作样本。

答案 2 :(得分:0)

您正在调用元素而不是ID。

$("wiz-config").serialize();

正在寻找一个元素,例如p,div等。

要按ID调用项目,您需要添加前导#:

$("#wiz-config").serialize();