Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Symfony2使用ajax更新值并在不刷新的情况下显示它们_Javascript_Php_Jquery_Ajax_Symfony - Fatal编程技术网

Javascript Symfony2使用ajax更新值并在不刷新的情况下显示它们

Javascript Symfony2使用ajax更新值并在不刷新的情况下显示它们,javascript,php,jquery,ajax,symfony,Javascript,Php,Jquery,Ajax,Symfony,首先,我想说我不是前端专家,这是我第一次深入研究ajax。这就是我想做的: 我想在不刷新整页的情况下更改并显示更新后的值。。我只想更新输入字段及其值,就是这样。我怎样才能只更新那部分代码 这是我的小枝(当我按下+按钮时,我会增加产品的数量,我希望小枝在不刷新整个页面的情况下进行更新。就像在任何标准购物车中一样): 目前我只有document.location.reload(true)重新加载整个页面,如何更改该代码 行动: public function addQuantityAction( R

首先,我想说我不是前端专家,这是我第一次深入研究ajax。这就是我想做的:

我想在不刷新整页的情况下更改并显示更新后的值。。我只想更新输入字段及其值,就是这样。我怎样才能只更新那部分代码

这是我的小枝(当我按下+按钮时,我会增加产品的数量,我希望小枝在不刷新整个页面的情况下进行更新。就像在任何标准购物车中一样):

目前我只有
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;
}

您可以在“添加/数量”操作的响应中返回新值,并在页面上输入所需位置:

success: function (data) {      
      if(data.success == false){
       alert('error')
      }else{
        // Assuming the value on data.amount
        $('.input-data input[type=text]').val(data.amount);
       }
    }
如果您愿意,请向我展示您的操作代码(添加/数量)并提供帮助

我希望有帮助

更新:

在你的行动回应中:

$response->setData(array(
    'success' => true,
    'message' => 'Qunatity increased',
    'amount'  => $cart[ $productid ]
));

我也更新了我的答案。如果对你有用,请接受。谢谢没有刷新它也不会改变…:(这一行可能有误:$('.input data input[type=text]').val(data.amount);它的输入附加,而不是输入数据。在任何情况下,模板中都有新的值,因此您应该可以在任何地方使用它。方法取决于您的DOM。嘿,我有一个问题。您提供的代码可以工作,但它会增加所有产品的值,而不仅仅是我按下的产品,刷新后所有内容都已修复。我如何才能使其仅用于y更改我按下按钮的产品的输入?将选择器更改为$this.parent('.input append').find('input').val(data.amount)
success: function (data) {      
      if(data.success == false){
       alert('error')
      }else{
        // Assuming the value on data.amount
        $('.input-data input[type=text]').val(data.amount);
       }
    }
$response->setData(array(
    'success' => true,
    'message' => 'Qunatity increased',
    'amount'  => $cart[ $productid ]
));