8

私にはわからない理由で、私のフォームは私のに入力されたテキストを送信していません<textarea>

ajaxコード:

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

入力は問題なく機能し、データベースに正しく投稿されます。

フォームは次のとおりです。

<form id="blogForm">
                        <input type="date" name="date" id="blogDate">
                        <input type="text" name="title" id="blogTitle">
                        <textarea name="blogContent" id="blogBody"></textarea>
                        <input type="submit" name="submit" id="blogSubmit">
                    </form>

そして、firebugで検査すると、POSTは次のようになります。 date=09%2F25%2F1986&title=Title&blogContent=

ご覧のとおり、blogContentは空です。どうしてこれなの?

4

6 に答える 6

5

nicEditorと呼ばれるWYSIWYGエディターがテキスト領域に接続されていることについては言及しませんでした。どうやら、jQueryがテキストエリアをシリアル化しないように強制するバグがあります。nicEditorを削除すると、正常に機能しました。すべての助けをありがとう。

于 2012-07-31T21:28:29.510 に答える
1

変化する:

   data:$('#blogForm').serialize(),

に:

   data:$('#blogForm').find('input, select, textarea, button').serialize(), 
于 2013-03-04T11:41:11.927 に答える
0

送信時にreturnfalseを追加します

<code>
<form id="blogForm" onsubmit="return(false);">  
    <input type="date" name="date" id="blogDate">
    <input type="text" name="title" id="blogTitle">
    <textarea name="blogContent" id="blogBody"></textarea>
    <input type="submit" name="submit" id="blogSubmit">    
  </form>​
</code>

ボタンクリックでajaxを呼び出す

$("#blogSubmit").on('click',function(){      

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

});
于 2012-07-31T21:32:04.023 に答える
0

textarea名はblogContentですが、IDはblogBodyです。#セレクターは名前ではなくIDを使用します。

于 2012-08-02T18:35:51.440 に答える
0

エディターを削除する必要はありません。通常、JSを使用して、各キーストロークの後、またはフォームの送信時に非表示のテキストエリアを更新することで機能します。そのため、エディターがそのビットを正しく取得していれば、違いはありません。

フィリップが提案したように、問題はIDと名前の属性が異なることだと思います。他のすべてはうまく一致します。シリアル化するときは、IDを使用している必要があります。おそらく、反対側のスクリプトでは、名前が来ることを期待しています(通常のフォーム送信で可能です)。

$ POST経由で送信しているので、var_dump($ _ POST);を実行するだけです。スクリプトでそれをコンソールに記録するか、JavaScriptでアラートを出します-AJAXを介してスクリプトに正確に何が送信されているかを確認します。

textareaがどの名前でも存在しない場合は、問題が間違いなくエディターであることがわかります。存在する場合は、nicEditorのmethodsを手動で呼び出して、非表示のtextareaを更新してみてください。

于 2012-09-27T11:49:09.107 に答える
0

ajaxSubmitを使用している場合、テキストエディタのtextareaからのPOSTデータは機能しません。

したがって、値を取得して非表示フィールドに配置する必要があります。そうすると、次のようにPOST値を取得できます。

<textarea id="safety" name="safety" style="width:600px;height:70px"></textarea>
<input type="hidden" name="safety_precautions" id="safety_precautions">

ajaxsubmitの前

$('#safety_precautions').val(tinyMCE.get('safety').getContent());
于 2013-04-22T12:36:46.620 に答える