2011-01-05 12 views
0

フォームに2つのサブミットボタンがあります。投稿を削除する人、編集する人。serializeArrayにサブミットボタンの値が含まれていません

編集フォームまたはユーザーが投稿を削除したというメッセージのいずれかを含むファンシーボックスを表示したいとします。 edit.phpの "if(isset)"文を使って、どのボタンが押されたかによって決まります。しかし、私は私が代わりに.click(機能()を試してみました... serializeArray内のボタンの値を取得する方法を見つけ出すことはできませんが、それは... fancyboxには何も送信しませんでした

$("#form").bind("submit", function() { 
        $.ajax({ 
         type  : "POST", 
         cache  : false, 
         url   : "edit.php", 
         data  : $(this).serializeArray(), 
         success: function(data) { 
          $.fancybox(data); 
         } 
        }); 

        return false; 
       }); 

フォームは、次のようになります。

<form method='post' action='' id="form"> 
    <input type='submit' value='Edit' name='edit' /> 
    <input type='submit' value='Delete' name='delete' onClick="return slett('<?php echo $oppgave->name; ?>')"/> 
    <input name='oppgaveID' type='hidden' value='<?php echo $oppgave->id; ?>' /> 
</form> 

誰かが私を助けることができれば、私はそれを本当に感謝事前に感謝を

答えて

0

jQueryのドキュメントからserialize()のために:!!

"成功したコントロール"のみが文字列にシリアル化されます。ボタンを使用してフォームが送信されなかったため、送信ボタンの値はシリアル化されません。フォーム要素の値をシリアル化された文字列に含めるには、要素にname属性が必要です。ファイル選択要素からのデータはシリアル化されません。

"成功したコントロール" のためのルールはここで定義されています。

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2

はまた、ニック・Craverからthis Stack Overflow solutionをチェックしてください。

+0

ありがとうございます!私は今それを行うことができた:) – guzh

関連する問題