0

こんにちは、以下のような jquery リクエストがあります。

$('#filterForm').submit(function(e){
        e.preventDefault();
        var dataString = $('#filterForm').serialize();
        var class2011 = document.getElementById("2011").className;
        //var validate = validateFilter();
        alert(dataString);
        if(class2011=='yearOn')
            {
                dataString+='&year=2011';
                document.getElementById("2011").className='yearOff';
            }
        else
            {
            document.getElementById("2011").className='yearOn';
            }

         alert (dataString);

          $.ajax({
            type: "POST",
            url: "myServlet",
            data: dataString,
            success: function(data) {
                /*var a = data;
                alert(data);*/
            }
          });   

そして私のフォームはのようなものです、

<form  method="post" name="filterForm" id="filterForm">
  <!-- some input elements -->
</form>

さて、フォームの送信イベントでjquery送信をトリガーしています(正常に動作しています)フォーム内に追加のパラメーターを1つ渡したいのですが、これはフォームのコンテンツの上にはありませんが、ページの外側にあります。

[コードのプレビューについては、この画像のリンクを確認してください][1]

では、どうすればイベントの上で、のクリックで、クラス yearOn (上記の HTML スニペットを確認) とクラス yearOff を持つ要素をトリガーし、 year の追加パラメーターを 2011 または 2010 に設定できますか

4

2 に答える 2

0

1.) すでに jQuery を使用している場合は、jquery が提供する $.post() 関数を使用できます。ほとんどの場合、生活が楽になります。

2.) 私は常にこのように追加のパラメーターを使用して成功した投稿をしています:

ここで追加のパラメーターを作成します

    commands={
            year:'2011'
    };

フォームのシリアライズと組み合わせる

var dataString=$.param(commands)+'&'+$("#filterForm").serialize();

ここで投稿を実行します

$.post("myServlet",data,
        function(data) {
            /*var a = data;
        alert(data);*/
    }
    );

または、本当に気に入った場合は $.ajax を使用してください

$.ajax({
        type: "POST",
        url: "myServlet",
        data: dataString,
        success: function(data) {
            /*var a = data;
            alert(data);*/
      }

最後に、これが現在行っている完全なコードです

   $('#filterForm').submit(function(e){
        e.preventDefault();
        var class2011 = document.getElementById("2011").className;
        //var validate = validateFilter();
        alert(dataString);
        if(class2011=='yearOn') {
                dataString+='&year=2011';
                document.getElementById("2011").className='yearOff';
        } else {
            document.getElementById("2011").className='yearOn';
        }
         commands={
                year:'2011'
         };

         var dataString=$.param(commands)+'&'+$("#filterForm").serialize();

         alert (dataString);

          $.ajax({
            type: "POST",
            url: "myServlet",
            data: dataString,
            success: function(data) {
                /*var a = data;
                alert(data);*/
          }
    }); 
于 2014-01-30T17:23:45.460 に答える
0
$(document).ready(function () {
            $('#filterForm').submit(function (e) {
                e.preventDefault();
                var dataString = $('#filterForm').serialize();
                if ($("#2011").hasClass('yearOn')) {
                    dataString += '&year=2011';
                    $("#2011").removeClass('yearOn').addClass('yearOff');
                }
                else {
                    $("#2011").removeClass('yearOff').addClass('yearOn'); 
                }

                $.ajax({ 
                    url: "/myServlet",
                    type: "POST",                       
                    data: dataString,
                    success: function (data) {
                        /*var a = data;
                        alert(data);*/
                    }
                });
            });
});
于 2012-05-19T12:34:31.540 に答える