3

jQuery がフォーム送信をキャッチする HTML フォームがありますが、何らかの理由でブラウザーが Ajax 呼び出しをバックエンドに 2 回送信しています。JavaScript エラーはなく、期待される json を返すバックエンドを含め、すべてが期待どおりに機能します。

同じ問題を抱えた他の投稿を見つけましたが、何の回答も得られませんでした。以下に私のコードを含めました。なぜこれが起こっているのかについて誰か提案がありますか?

HTML:

<form action="/rating/create/<?php echo $jobId ?>" method="post" id="rating-form">
    <input type="hidden" id="Rating_jobId" name="Rating[jobId]" value="<?php echo $jobId ?>" />
    <input id="Rating_quality" type="slider" name="Rating[quality]" value="0" />
    <input id="Rating_service" type="slider" name="Rating[service]" value="0" />
    <input type="submit" name="submit" value="Submit">
</form>

JavaScript/jQuery:

    $('#rating-form').live('submit', function() {

        var action = $(this).attr('action');

        var dataset = {'Rating':{
                        'jobId':$('#Rating_jobId').val(),
                        'quality':$('#Rating_quality').val(),
                        'service':$('#Rating_service').val(),
                        },'ajax':'true'}

        d = new Date;
        dateCache = d.getTime();
        $.ajax({
            type: "POST",
            url: action +"?"+ dateCache,
            data: dataset,
            datatype: "application/json",
            cache: false
        }).done(function( response ) {

            if(response.success == 'true'){

                $('a.rating-'+ response.jobId).parent().remove();
                $.fancybox.close()

            } else {
                alert( response.error );
            }
         });

        return false;
    });
4

2 に答える 2

1

これを回避するには、ボタンをクリックして無効にし、ajax 呼び出しが完了したら有効にします。

于 2012-09-05T05:38:29.890 に答える
0

を作るのrating-form').live('submit', function() {}ではなく、ただやってみませんか

$("form").submit(function () {
  $(this).ajaxSubmit();
  return false;
})

jquery.form.jsを含めます。成功のコールバックについては、リンクを確認してください。

于 2012-10-22T09:41:01.573 に答える