【发布时间】:2015-05-06 17:35:28
【问题描述】:
首先我想说我不是前端专家,这是我第一次深入研究 ajax。所以这就是我想做的:
我想在不刷新整个页面的情况下更改并显示更新的值。我唯一要更新的是输入字段及其值,仅此而已。如何只更新那部分代码?
这是我的树枝(当我按下 + 按钮时,我会增加产品的数量,并且我希望树枝更新它而不刷新整个页面。就像在任何标准购物车中一样):
{% for key, item in cart %}
{% if key == info.id %}
<div class="input-append">
<input class="span1" style="max-width:34px" placeholder="{{ key }}" value="{{ item }}" id="appendedInputButtons" size="16" type="text" data-id="{{ key }}"/>
<a href="javascript:void(0)" class="remove btn"><i class="icon-minus"></i></a>
<a href="javascript:void(0)" class="add btn"><i class="icon-plus"></i></a>
{% endif %}
{% endfor %}
这是脚本:
$(document).ready(function () {
$(document).on('click', '.add', function (e) {
$this = $(this);
$.ajax({
type: 'POST',
url: 'add/quantity',
dataType: 'JSON',
data: {product: $this.parent('.input-append').find('input').data('id'),quantity: $this.parent('.input-append').find('input').val()},
success: function (data) {
if(data.success == false){
alert('error')
}else{
document.location.reload(true);
}
}
});
});
});
目前我只有 document.location.reload(true); 可以重新加载整个页面,我该如何更改该代码?
动作:
public function addQuantityAction( Request $request ) {
$response = new JsonResponse();
$requestData = $request->request->all();
$productid = $requestData['product'];
$quantity = $requestData['quantity'];
/** logic*/
$em = $this->getDoctrine()->getManager();
$product = $em->getRepository('MpShopBundle:Product')->find($productid);
$qtyAvailable = $product->getStock();
$session = $this->getRequest()->getSession();
$cart = $session->get('cart', array());
if ( $qtyAvailable > $cart[ $productid ] ) {
$cart[ $productid ] = $cart[ $productid ] + 1;
$qtyAvailable = $qtyAvailable - 1;
$response->setData(array('success'=>true,'message'=>'Qunatity increased'));
$session->set('cart', $cart);
} else {
$response->setData(array('success'=>false,'message'=>'Out of stock'));
}
return $response;
}
【问题讨论】:
标签: javascript php jquery ajax symfony