0

私は次のajaxを持っています。指定された入力要素が変更されるたびに、関数は合計を再計算しようとします。

$('[name^=quantities]').change(function() {
      calculate();
});
function collectFormData(fields) {
    var data = {};
    for (var i = 0; i < fields.length; i++) {
        var $item = $(fields[i]);
        data[$item.attr('name')] = $item.val();
    }
    return data;
}

function calculate(){
    var $form = $('#purchase-form');
    var $inputs = $form.find('[name]');
    var data = collectFormData($inputs);
    $.ajax({
        url: '${validateUrl}',
        type: 'POST',
        data: data,
        contentType: 'application/json; charset=utf-8',
        success: function (response) {
            alert(response.status);
        },
        error: function () {
            alert("error");
        }
    });
}

HTML:

<form id="purchase-form" action="/MyNewApp/purchase" method="post">
...
...
<input id="quantities[0]_id" name="quantities[0]" type="number">
<input id="quantities[1]_id" name="quantities[1]" type="number">
</form>

春の私のハンドラー

@RequestMapping(value = "/purchaseValidation.json", method = RequestMethod.POST)
    @ResponseBody
    public ValidationResponse validate(
            @ModelAttribute(value = "form") @Valid PurchaseForm form,
            BindingResult result, Locale locale) {
        ValidationResponse res = new ValidationResponse();
        // value of form.getQuantities.get(0) == 0
        // value of form.getQuantities.get(1) == 0
        return res;
    }

PurchaseForm.java

public class PurchaseForm {

    private List<Item> itemList;

    private List<Integer> quantities;

    private boolean starterPackageRequired;

    public PurchaseForm() {

    }
        ...
        ...
}

私のajax投稿中に、数量の値が2と0であることを確認できますが、私のスプリングハンドラーでは両方の値が0です。これを引き起こす可能性のあるポインターはありますか?

4

2 に答える 2

0

ajax 呼び出し関数を次のように変更して修正します。

 $.post('${validateUrl}', data, function(response) {
        $('#ajaxResult').text(response);
    }, 'json');

と の間には何か違いがあるに違いないと思い$.postます$.ajax

于 2013-03-19T05:47:19.833 に答える
0

入力要素の名前を から に変更name="quantities[0]"name="quantities[1]"ますname="quantities"

注:パフォーマンス上の理由から$('[name^=quantities]')、セレクターも変更してください$('input[name^=quantities]')

于 2013-03-19T04:14:35.300 に答える