使用空值序列化返回的对象

时间:2015-08-28 21:38:49

标签: jquery javascriptserializer

序列化有些麻烦。我有我的名字属性设置,但我仍然得到一个正确名称但没有值的字符串(即使我在输入字段中输入信息) - 类似这样的事情:

magnolia_name =安培; magnolia_email =安培; magnolia_message =

让我发疯。 这是html代码(我注释了文件输入,以防万一是罪魁祸首,没有运气)。

                 <form id="contact" method="POST">
                    <div class="group">      
                      <input type="text" name="magnolia_name" id="magnolia_name" required>
                      <span class="bar"></span>
                      <label>Name</label>
                    </div>

                    <div class="group">      
                      <input type="text" name="magnolia_email" id="magnolia_email" required>
                      <span class="bar"></span>
                      <label>E-mail</label>
                    </div>

                    <div class="group textarea">      
                      <textarea name="magnolia_message" id="magnolia_message"></textarea>
                      <span class="bar"></span>
                      <label>Message</label>
                    </div>

                  <!--   <label for="fileupload" class="fileupload-label">
                        <span>Attach files <span class="glyphicon glyphicon-upload"></span></span>
                    </label>
                    <input id="fileupload" type="file" name="files" multiple /> -->
                    <div class="uploaded-files"></div>
                    <div class="submit">
                        <input type="submit" value="Send!" name="submit" id="submit">
                        <div id="progress">
                            <span>Uploading file(s)</span>
                            <div class="bar"></div>
                        </div>
                    </div>
                </form> 

这是我的JS

var $form = $formContainer.children('form');
var formData = $form.serialize();
$form.submit(function(e){
    console.log(formData);
    e.preventDefault();
});

3 个答案:

答案 0 :(得分:1)

更改您的提交处理程序以捕获事件中的formData

$form.submit(function(e){
    var formData = $form.serialize();
    console.log(formData);
    e.preventDefault();
});

答案 1 :(得分:1)

如上面的评论所述。您必须在提交表单时序列化该方法,而不是之前:

$().ready(function() {
    var $form = $('form');

    $form.submit(function(e){
        var formData = $form.serialize();
        console.log(formData);
        e.preventDefault();
    });
});

Example is here

答案 2 :(得分:0)

var $form = $('form#contact');
var formData = $form.serialize();
$form.submit(function(e){
    console.log(formData);
    e.preventDefault();
});

我不明白$ formContainer是什么,因为这不是选择器。这就是破坏你的代码的原因。

希望这有帮助