JQuery发送空值

时间:2011-12-31 16:56:03

标签: javascript jquery ajax

我不明白......我查看了我的代码一百次而且我没有收到错误......

我实际上正在使用JQuery和AJAX进行测试,并使用textarea提交了一个简单的表单。没有AJAX它工作正常,但是,它总是发送我的textarea的空值......

Javascript代码:

 $(document).ready(function(e) {
        $("#formPost input").attr("disabled", false);

        $("#formPost input:submit").click(function() {
            $.ajax({
                type: 'POST',
                url: 'post.php',
                dataType: 'json',
                data: $('#formPost').serialize(),
                beforeSend: function(XMLHttpRequest) {
                    $("#formPost input").attr("disabled", true);
                    $("#formPost .ajaxloader").show();
                },
                success: function(data) {
                    var message = $("#flashMessage");

                    message.text(data.msg);
                    if(data.error) {
                        message.addClass("fail");
                    }
                    else {
                        message.addClass("success");
                    }
                    message.show();
                },
                error : function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#formPost .ajaxloader').hide();
                    $('#flashMessage').removeClass().
                        addClass('fail').text('There was an error.').show();
                },
                complete: function(XMLHttpRequest) {
                    $("#formPost input").attr("disabled", false);
                    $("#formPost .ajaxloader").hide();
                }
            });
            return false;
        });
    });

HTML:

<div>
      <h1>Add new post</h1>
      <div id="flashMessage"></div>
      <form id="formPost" method="post" action="post.php">
        <textarea id="post" name="post"></textarea>
        <input type="submit" value="Save" />
        <div class="ajaxloader">
          <img src="ajax-loader.gif" />
        </div>
        <div class="clear"></div>
      </form>
    </div>

我使用Firebug并查看&#34; Network&#34; - &GT; &#34; XHR&#34; - &GT; &#34;邮政&#34;在Source下,他显示 post =

那么价值在哪里?

2 个答案:

答案 0 :(得分:1)

您的问题与CKEditor有关(正如您在评论中所述),因为WYSIWYG编辑器会替换textarea的外观并更新表单提交上的值。因此,在使用Ajax时,必须使用CKEditor的内置函数手动更新textarea的值。我无法专门帮助您使用CKEditor,但此主题可能有所帮助:CKEditor, AJAX Save

答案 1 :(得分:0)

您正在禁用beforeSend方法中的表单元素,但JQuery的serialize将忽略这些禁用的元素。首先尝试删除它以进行测试。 This SO question有一些方法可以解决它。