2013-03-19 91 views
0

我有以下ajax。只要指定的输入元素发生变化,函数就会尝试重新计算总数。Spring MVC和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,但在我的spri ng处理程序的两个值都是0.任何可能导致这种情况的指针?

回答

0

将输入元素的名称从name="quantities[0]"name="quantities[1]"更改为name="quantities"

注:

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

我想一定是$.post$.ajax之间的一些差异:通过改变Ajax调用函数来此选择$('[name^=quantities]')也更改为$('input[name^=quantities]')因为性能原因

+0

我不明白这是如何相关的。只有在表单提交期间发送jquery ajax文章时,Spring处理程序才能获得正确的值。 – abiieez 2013-03-19 04:22:17

+0

你可以分享PurchaseForm吗? – 2013-03-19 04:27:46