Pereiti prie turinio

Symfony su Ajax. Reikia issamios pagalbos.


Rekomenduojami pranešimai

Sveiki, reikia issamios pagalbos, kaip naudoti Ajax su Symfony2. Normalaus tutorialo niekur nerandu, juolab, kad butu bent kazkiek panasus y mano varianta.

 

Zodziu, man reikia, kad paspaudus mygtuka masyve esancio rakto reiksme padidetu. Funkcijas padidinti reiksmem kaip ir zinau, taciau nesuprantu, kaip tai padaryti su Ajax. Taigi, turiu twige koda kuriuo atvaiduoju masyvo rakto reiksme ir kartu tris mygtukus: padidinti, sumazinti, ir istrinti(su situo viskas tvarkoj). Noriu, kad paspaudus padidinti reiksme padidetu +1, sumazinus sumazetu -1.

 

Twigas:

 

<div class="input-append"><input class="span1" style="max-width:34px" placeholder="{{ key }}" id="appendedInputButtons" size="16" type="text">
<button class="btn" type="button" name="add" ><i class="icon-minus"></i></button>
<button class="btn" type="button" name='subtract'><i class="icon-plus"></i></button>

 

Kontroleryje turiu funkcija kuri prideda +1:

 

/**
* @Route("/add/{id}", name="add")
*/
public function addAction($id)
   {
   // check the cart
    $session = $this->getRequest()->getSession();
    $cart = $session->get('cart', array());

    // check if the $id already exists in it.
    if( isset($cart[$id]) ) {
        // if it does ++ the quantity
        $cart[$id] = $cart[$id] + 1;

    } else {

        return $this->redirect( $this->generateUrl('cart') );
    }

    $session->set('cart', $cart);

    // redirect(index page)

    return $this->redirect( $this->generateUrl('cart') );
}

 

Kodas kaip ir normalus, bet niekaip nesusigaudau kaip viska integruoti kartu su Ajax? Prasau pagalbos!!

 

UPDATE

 

Taigi pavyko susikurti ajax scripta, paspaudus mygtuka, viska keliom sekundem uzfreezina ir vel normaliai. Ajar requesto negaunu kazkodel..

 

Mano scriptas:

 

$(document).ready(function () {
   $(document).on('click', '.plus', function (e) {
   $this = $(this);
   //alert("product id "+$this.parent('.input-append').find('input').data('id') + " Quantity "+$this.parent('.input-append').find('input').val())
   $.ajax({
       type: 'POST',
       url: "{{path('update_cart')}}",
       async: false,
       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')
         }
       }
   });
});
});

 

routing.yml:

 

update_cart:
 pattern:  /update/cart
 defaults: { _controller: MpShopBundle:Homepage:update }

Redagavo domas55
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveikas. Nu seip ne taip susikuriau as ta ajax scripta, taciau turiu kita problema su jo paleidimu. Paspaudus mygtuka, viskas keliom sekundem uzfreezina ir tada vel veikia normaliai, taciau jokio ajax requesto negaunu. paziurek y koda mano poste. Gal numanai kodel?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tiesa. :) Taciau async:false, sutvarko tik freeza, galiu spaudineti kiek noriu, ajax nereaguoja. Beto, exception profileryje, vis delto kazkas vyksta:

 

0c0136	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/%7B%7Bpath('update_cart')%7D%7D	Wed, 06 May 2015 14:02:04 +0200
f5c056	::1	GET	http://localhost/Digidis/tree/web/app_dev.php/%7B%7Bpath('update_cart')%7D%7D	Wed, 06 May 2015 14:02:04 +0200
9fe35e	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/%7B%7Bpath('update_cart')%7D%7D	Wed, 06 May 2015 14:02:03 +0200
39ff85	::1	GET	http://localhost/Digidis/tree/web/app_dev.php/%7B%7Bpath('update_cart')%7D%7D	Wed, 06 May 2015 14:02:03 +0200

 

ir t.t..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Supratau, taciau tai nepadejo. :)

 

Dabar gaunu vien POST metodus..

 

a59e68	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:36 +0200
32c2e1	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:35 +0200
6ec8ff	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:33 +0200
4ac156	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:32 +0200
04c5a1	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:31 +0200
968789	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:29 +0200
c8372b	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:28 +0200
97192f	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:29:26 +0200
dff8a3	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:20:47 +0200
e4177b	::1	POST	http://localhost/Digidis/tree/web/app_dev.php/update/cart	Wed, 06 May 2015 14:20:46 +0200

Redagavo domas55
Nuoroda į pranešimą
Dalintis kituose puslapiuose

as su symfony nedirbu, bet man atrodo tavo naudojamas pavyzdys yra siek tiek kreivas

 

$(document).ready(function () {
   $(document).on('click', '.plus', function (e) {
   $this = $(this);
   //alert("product id "+$this.parent('.input-append').find('input').data('id') + " Quantity "+$this.parent('.input-append').find('input').val())
   $.ajax({
       type: 'POST',
       url: "{{path('update_cart')}}",
       async: false,
       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')
         }
       }
   });
});
});

 

 

siulau pasikurti paprasta index.php (kur nebus jokio framework kodo) faila i kuri kreipsiesi su ajax ir kuris grazins rezultatus

kai susitvarkysi su javascript dalimi, tada galesi naudoti framework

 

nes dabar pas tave kai ir javascript ir symfony klaidos, tai sunku paciam suprasti del kieno kaltes neveikia

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tam, kad nebūtų 500 internal server error, tavo controller'io metodas, kurį call'ini su ajax'u, turi grąžinti response'ą.

 

use Symfony\Component\HttpFoundation\Response;

 

public function demoAction(Request $request)
   {
       //Your logic

       return new Response();
   }

 

Galbūt tai jums padės. Čia viskas labai simple. Tik redirect'ą aš tavo vietoje daryčiau su js.

Redagavo Steeler
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...