2015-07-07 2 views
-4

У меня проблема с моим кодом. Поэтому я попытался удалить элемент из сеанса с помощью ajax-запроса. Моя ссылка в HTML:Удалить элемент из сеанса с помощью ajax

<a style="padding-left:5px;" href="#" onclick="removeItemFromSession({{ product['product_id'] }})" title="Remove this item">Remove</a> 

Мой Аякса removeItemFromSession() Methode:

<script type="application/javascript"> 
    function removeItemFromSession(id){ 
     console.log(id); 
     var id = id, 
     url_deploy = "http://"+window.location.hostname+":1234"+"/cartItems/delete"; 
     console.log(url_deploy); 
     $.ajax({ 
      url: url_deploy, 
      type: "POST", 
      async: true, 
      data: { id:id}, 
      success: function(data){ 
       document.location.reload(true); 
      }, 
      error: function(){ 
      } 
     }); 
    } 
</script> 

Маршрут для/cartItems/удаления:

shoppingCart_delete: 
path: /cartItems/delete 
defaults: { _controller: ShopDesktopBundle:Basket:delete } 
requirements: 
    _method: GET|POST 

Мой метод удаления в контроллере:

public function deleteAction(){ 
    $id = $_POST['id']; 
    print_r($id); 
    $sessionVal = $this->get('session')->get('aBasket'); 
    unset($sessionVal[$id]); 
} 

Я получаю ошибку или: "NetworkError: 500 Internal Server Error - http://shop.com:1234/cartItems/delete". Не могли бы вы мне помочь ? Thx заранее

+5

Проблема с вашей функцией удаления, не имеет никакого отношения к javascript. – Skatch

ответ

0

Первое: проверить app/logs/prod.log на любое содержательное сообщение об ошибке. Если ни один не найден, проверьте журнал сервера (будь то Apache или любой другой). Если вы не работаете, вы можете запустить режим _dev, чтобы получить более подробное сообщение об ошибке.

Другое: рекомендуется избегать использования суперглобалов ($ _POST, $ _ SESSION, $ _GET, ...) из `Symfony2. Сама структура обеспечивает способы получения всех необходимых вам вещей.

Например, ваш код выше, должен выглядеть следующим образом:

public function deleteAction(){ 
    # Since you tagged the question with Symfony-2.1 
    $id = $this->getRequest()->request->get('id'); 

    if ($id){ 
     $sessionVal = $this->get('session')->get('aBasket'); 
     if (array_key_exists($id, $sessionVal)){ 
      unset($sessionVal[$id]); 
      $sessionVal = $this->get('session')->set('aBasket', $sessionVal); 
     } 
    } 
} 

Надеется, что это помогает.

-1

Включите регистрацию ошибок на PHP и просмотрите журналы ошибок. Журналы ошибок, скорее всего, указывают на проблему. Если нет, запишите значения $ sessionVal и $ id из вашей php-функции; что может сказать вам, где проблема.

Смежные вопросы