2011-12-31 34 views
1

我不明白......我回顧我的代碼一百次,我不明白的錯誤...JQuery的發送空值

實際上我測試了一下使用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和看下「網絡」 - >「XHR」 - >「發佈」,並在源下顯示post =

那麼價值何去何從?

+0

它正在爲我工​​作http://jsfiddle.net/usmanhalalit/zayU5/。您是否使用富文本編輯器來替換textarea? – Usman 2011-12-31 17:15:17

+0

是的,我做的大聲笑:/這是一個不好的跡象? 編輯:好的,我刪除了CKEditor(富文本編輯器),它工作正常。但爲什麼它不適用於RTE? – Fortuna 2011-12-31 17:22:57

+0

其中,TinyMCE? – Usman 2011-12-31 17:24:43

回答

1

你的問題與CKEditor的(如你的評論稱)有關,因爲WYSIWYG編輯器取代textarea的形式出現,並更新值提交。因此,您必須使用CKEditor的內置函數來手動更新textarea的值,因爲您使用的是Ajax。我不能專門幫你CKEditor,但這個線程可能有幫助:CKEditor, AJAX Save

0

您正在禁用beforeSend方法中的表單元素,但JQuery的serialize將忽略那些禁用的元素。嘗試刪除首先測試。 This SO question有一些方法來解決它。

+1

我認爲他是禁用'input'而不是'textarea'。 – Usman 2011-12-31 17:16:37