2

いくつかのチェックボックス、ラジオボタン、および選択ボックスを備えた非常に単純なフォームがあります。jQueryの$.ajaxを使用して、選択したすべてのフォームデータを投稿したいと思います。しかし、何らかの理由で、フォームはシリアル化されません。何が原因なのかわかり$('#FormID').submit(..)ません...(補足:私も機能しません)。そこで、次のコードでボタンを作成しました。

$(document).ready(function() {
    $('#DoSearchRequest').click(function(event) {
        //event.preventDefault(); // read about this somewhere, doesn't help
        $('#res').html($('#FormSearch').serialize()); // just some <p> to output the result to
        $.ajax({
            url:        'http://www.domain.nl/ajax/GetResultsBySearchRequest.php',
            data:       $('#FormSearch').serialize(),
            type:       'POST',
            success:    function(result) {
                            console.log(result);
                        },
            error: function(a, b, c) { console.log(a); }

        });

        return false;
    });
});

私のボタンはフォームの外にあります(フォームにあるかどうかは関係ありません)。

私のフォーム:

<form name="FormSearch" id="FormSearch" method="post">
... form elements
</form>

jQuery1.7.1とjQueryUI1.8.18を使用しています

4

4 に答える 4

9

ばかげていますが、私にとっては、フォームのフィールドに名前を付けなかったため.serialize、空の文字列が表示され、.serializeArray機能しませんでした。

フォームフィールドに名前を付けてください。そうしないと、値が取得されません。

<input name='importantField'/>

と同じではありません

<input id='importantField'/>

.serializeまたは.serializeArray、フォームフィールドに名前を定義していない場合は、デフォルトのフォーム送信も機能しません。

于 2015-03-13T10:34:40.437 に答える
3

プレビューWebページを見た後、問題は、別のフォーム要素「searchbar」内にフォーム要素「form543」をネストしている可能性があると思います。

Firefoxでテストしたところ、$("#form543").lengthjQuery0がフォームをまったく見つけられないことがわかりました。試し$("#searchbar").serialize()てみると、選択した要素の実際のフィールド値や、チェックしたチェックボックスなどが返されました。

外側のフォーム要素「searchbar」を削除して(または、ネストされたフォームがないようにマークアップを変更して)、JSコードが機能するかどうかを確認することをお勧めします。

于 2012-11-01T00:20:16.283 に答える
1

あなたはそのようなものを作らなければなりません:

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});
于 2012-10-31T22:47:17.077 に答える
1

フォーム(ボタンを含む)のすべての入力にname属性を使用します。例:<input type="text" id="fname" name="fname"/>

次に、serial()関数が機能するかどうかをテストできます。

$('#contact-form').submit(function() {
  alert($(this).serialize());
});

次にAjaxで:

  $.ajax({
    type: 'POST',
    url: 'SendAd.php',
    dataType: 'json',
    data: $('#contact_form').serialize(),
})
于 2018-08-22T07:22:29.597 に答える