Автор Тема: Проблем с вземането на данни след ajax заявка  (Прочетена 2589 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Здравейте! След много мъки и неуспешни опити не мога да разбера как да манипулирам данните след ajax заявката. Всмисъл правя си аз заявката към файла/сървъра, вземам си върнатите данни, извеждам си ги на екрана и всичко точно. Обаче като се опитам да след това да приложа някакъв JS върху част от тези данни и не става. В моя случай:
Чрез ajax извеждам категориите в 1 div, в който има линк за изтриването на категорията с id = на id-то на категорията. След натискането на този линк искам пак с ajax да пращам заявка към файла/сървъра и тази категория да се изтрие.
ПП: С ajax заявката нямам проблем, ще си я направя.

Тук извеждам категориите от DB успешно:
Код: HTML
  1. <div class="columnRight">
  2.         <h3>Категории:</h3>
  3.         <div id="catincome" class="categories">
  4.                                        
  5.         </div>
  6. </div>
  7.  

PHP заявката ми, чрез която извеждам данните:
Код: PHP
  1. if ($_POST['send'] == 'getCats'){
  2.     $userID = $_SESSION['userID'];
  3.     $inCat = $_POST['inCat'];
  4.     $db->setQuery("SELECT * FROM categories WHERE `in` = '$inCat' AND `id_user` = '$userID'");
  5.     while($row = $db->getResultArray()){
  6.         echo '
  7.            <div class="categoriesContent">
  8.                        '.$row['name'].'
  9.                        <img src="style/img/edit.png" />
  10.                        <a href="#" class="delete" id="'.$row['id'].'"><img src="style/img/delete.png" /></a>
  11.                    </div>
  12.            ';
  13.     }
  14. }
  15.  

JS & Ajax:
Код: Javascript
  1. $(document).ready(function(){
  2.        
  3.     function getCat(inCat){
  4.         $.ajax({
  5.             url: 'ajax.php',
  6.             type: 'post',
  7.             data:{
  8.                 send: 'getCats',
  9.                 inCat: inCat
  10.             }
  11.         }).done(function(data){
  12.             $("#cat"+inCat).html(data);
  13.         })
  14.     }
  15.    
  16.     function setCat(inCat, name){
  17.         $.ajax({
  18.             url: 'ajax.php',
  19.             type: 'post',
  20.             data:{
  21.                 send: 'setCats',
  22.                 inCat: inCat,
  23.                 name: name
  24.             }
  25.         }).done(function(data){
  26.             $("#infotext"+inCat).text("Категорията е добавена успешно!");
  27.             $("#name"+inCat).val('').focus();
  28.            
  29.             getCat(inCat);
  30.         })
  31.     }
  32.    
  33.     // ************ INCOME CATEGORIES **************/
  34.     $("#addIncomeCategories").click(function(e){
  35.                 e.preventDefault();
  36.         var ime = $.trim($("#nameI").val());
  37.         setCat('income', ime);
  38.     })
  39.    
  40.     getCat('income');
  41.    
  42.     // ************ EXPENSE CATEGORIES **************/
  43.     $("#addExpenseCategories").click(function(e){
  44.                 e.preventDefault();
  45.         var ime = $.trim($("#nameE").val());
  46.        
  47.         setCat('expense', ime);
  48.     })
  49.    
  50.     getCat('expense');
  51.  
  52. })
  53.  

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Проблем с вземането на данни след ajax заявка
« Отговор #1 -: 13 Февруари 2013, 22:21:54 »
В js не виждам да се обръщаш към div.categoriesContent нито към .delete!!!
« Последна редакция: 13 Февруари 2013, 22:24:45 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: Проблем с вземането на данни след ajax заявка
« Отговор #2 -: 13 Февруари 2013, 22:40:27 »
Обръщам се към .delete по следния начин:
Код: Javascript
  1. $(".delete").live('click', function(){
  2.         var id = $(this).attr('id');
  3.         console.log(id);
  4.     })
  5.  

Най-интересното е, че току що като го пробвах проработи. ;x Благодаря ти за помощта по-рано тази вечер. :)

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Проблем с вземането на данни след ajax заявка
« Отговор #3 -: 14 Февруари 2013, 01:23:43 »
Просто ти е останал кеша и е работил стария скрипт :)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: Проблем с вземането на данни след ajax заявка
« Отговор #4 -: 14 Февруари 2013, 12:52:22 »
Не ползвай live! Няма го в 1.9 вече, а си е depricated Поне от 2 или 3 версии преди това.

Вместо него ползвай $("body").on("click", ".delete", function(){});

Още по-добре вместо "body" селектирай статичен елемент (Такъв който съществува на страницата по време на bind-а на събитието)

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Проблем с вземането на данни след ajax заявка
« Отговор #5 -: 14 Февруари 2013, 17:04:28 »
@NoBBy е прав, значи става:
Код: Javascript
  1. $(document).on('click', '.delete', function(){
  2.     var id = $(this).attr('id');
  3.     console.log(id);
  4. });
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: Проблем с вземането на данни след ajax заявка
« Отговор #6 -: 15 Февруари 2013, 17:31:38 »
Да, оправих се сам аз. :)