2

少し助けが必要です。壁にぶつかるまで、私のjQueryは今日スムーズに進んでいました。テキスト送信リンクまたは何らかの送信ボタンを使用して、AJAX を介してその場で複数のフォーム (個々の項目) を編集できるようにしようとしています。問題は、AJAX を介してフォームを送信することはできますが、フォームからのデータがまったくないことです...つまり、送信を押すと、リクエストは送信されますが、クエリ文字列は送信されません。誰かが不足しているものを特定するのを手伝ってもらえますか?

これが私のjqueryです:

        $('.submitLineChanges').click(function() {
            var formID = $(this).closest('form').attr('ID')
            datastring = $(formID).serialize();
            $.ajax({
                    type:'POST', 
                    url: 'update_ajax.asp', 
                    data: datastring,
                    success: function(response) {
                        alert("Success " + id)
                    //$('#ContactForm').find('.form_result').html(response);
                }//end ajax options
            });//end ajax
            return false;
        });//end of click function

そして私のフォーム:

    <form id="line-item-<%= intRecID %>-form" class="submitLineForm">
        <input type="hidden" name="UpdateLineItem" value="true" />
        <span class="edit" id="edit-line-<%= intRecID %>" style="display: none;">
            <span class="quantity"><input name="part_qty" id="part_qty_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_qty"),0)%>"></span>
            <span class="partno"><input name="part_no" id="part_no_<%= intRecID %>" type="text" value="<%=rs("quote_part_id")%>"></span>
            <span class="descrip"><Textarea name="part_descrip" type="text" id="descrip<%= intRecID %>" rows="3"><%=rs("quote_part_descrip")%></Textarea></span>
            <span class="sellprice">$<input name="part_sale" id="part_sale_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_sale"),2)%>"></span>
            <span class="margin" id="emargin_<%= intRecID %>"><%=margin%></span>
            <span class="cost"><strong>Cost: </strong>$<input name="part_cost" id="part_cost_<%= intRecID %>" type="text" value="<%=FormatNumber(cost,2)%>"></span>
            <span class="wt"><strong>Weight: </strong><input name="part_wt" id="part_wt_<%= intRecID %>" type="text" value="<%=FormatNumber(rs("quote_part_wt"),2)%>"></span>
            <span class="update"><input type="button"  value="Save Changes" class="submitLineChanges" /></span>
        </span>
    </form>

お分かりのように、私はこれを ASP で実行しています。フォームは基本的にカート内の項目ごとです。ページの性質上、すべての情報を編集するための別のページは必要ありません。これは機能するはずですが、現在の視野狭窄を通して何かを見落としている可能性があります。

フォームは行ごとにあることに注意してください。すべてのフォームを送信する必要はなく、1 つだけ送信する必要があります。

ありがとう

4

1 に答える 1

4

変化する

datastring = $(formID).serialize();

var datastring = $('#' + formID).serialize();

#ID セレクターを使用してプレフィックスを使用する必要があります。また、varキーワードがないと、理由もなくグローバル名前空間を汚染します。

またはさらに良い...交換できます

var formID = $(this).closest('form').attr('ID');
var datastring = $('#' + formID).serialize();

var datastring = $(this).closest('form').serialize(); 

を見つけてform、一度にシリアライズします !!

その提案をしてくれた@MikeBrantに感謝します。

于 2012-07-26T13:46:30.260 に答える