Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
[FENIX]
1 / 1 / 2
Регистрация: 09.10.2009
Сообщений: 223
1

не передаются данные из JS в PHP

10.05.2016, 09:42. Просмотров 221. Ответов 6
Метки нет (Все метки)

Всем привет. Народ, есть сайт: http://bodys.top/ При клике на кнопку "В корзину" срабатывает jQuery-метод:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Добавление новой покупки в список пользователя
    //.add-shop-card - класс для кнопки "В корзину"
    $('.add-shop-card').add('.shop-t-delete').on('click', function () {
        
        
        var th = $(this);
        var dataShopId = parseInt(th.attr('data-shop'));//Берём HTML-атрибут data-shop, т.е. это номер (id) товара
        var dataCount = parseInt(th.attr('data-count'));
        //
        var data = "p=2&shop_id=" + dataShopId + "&count=" + dataCount;//Пример строки: p=2&shop_id=82&count=1
        ajaxUpdateBasketData(data, 'inc/shop.php');//тут вызывается php-скрипт добавления товара в корзину
        
        
    });
Потом вызывается метод ajaxUpdateBasketData:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Функция добавления товара в корзину
 
function ajaxUpdateBasketData(dataSend, file) {
    
    $.ajax({
        type: "GET", //Я думаю что используется GET - потому что база изначальна уже была готовая. Из базы выдёргивается только id товара и его
                    //количество
 
        url: file, //файл inc/shop.php
        data: dataSend //Пример строки данных: p=2&shop_id=82&count=1
        
    }).done(function (data) {
        existsUpdateData = 1;
        if (data == 'new')
            showAlert(1, 'Товар удачно добавлен в корзину');
        if (data == 'update')
            showAlert(1, 'Товар удачно обновлен в корзине');
        if (data == 'delete')
            showAlert(2, 'Товар удален из корзины');
    });
 
}
Так вот, метод ajaxUpdateBasketData почему то не передаёт данные в php-файл shop.php, я из php никак данные выцепить не могу, помогите пожалуйста.

shop.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
 
//Устанавливаем соединение с БД
include_once("../config.php");
 
echo "test ";
echo $_GET['shop_id'];//В этой переменной ничего нет ((
 
mysql_close($connecDB);
 
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2016, 09:42
Ответы с готовыми решениями:

Не правильно передаются данные в поле ввода. (undefined)
При нажатии на press текст передаётся в поле ввода, но передаётся не правильно....

Не передаются данные $.ajax()
Не получается передать две переменные для обработки их в БД (board_db.php) Оба...

Не передаются данные через ajax
Все привет. Не могу понять в чем дело передаю данные вот так var s=&quot;1111&quot;;...

Не передаются данные, преобразованные методом serializeArray
Уже второй день ломаю голову, если к форме применить serializе(), то тогда все...

В Debug режиме в VS-2012 данные передаются нормально, но при запуске без дебага возникают ошибки и данные не передаются
Всем доброе время суток. Есть проект, работающий на ASP.NET MVC с...

6
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
10.05.2016, 14:25 2
Javascript
1
2
3
4
$.get( "test.cgi", { name: "John", time: "2pm" } )
  .done(function( data ) {
    alert( "Data Loaded: " + data );
  });
Попробуйте переписать ваш ajax под этот пример вместо name и time просто свое подставьте ну и test.cgi замените и что вам консоль показывает в вашем запросе?
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
10.05.2016, 14:32 3
Вроде все нормально в done зашло new вывело
0
Миниатюры
не передаются данные из JS в PHP  
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
10.05.2016, 14:34 4
Как видите все заходит все возвращается.
0
Миниатюры
не передаются данные из JS в PHP  
[FENIX]
1 / 1 / 2
Регистрация: 09.10.2009
Сообщений: 223
10.05.2016, 14:37  [ТС] 5
Упс, это я тупанул, в общем добавил в ajaxUpdateBasketData console.log(data) и видно, что результат есть, вот полная функция:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function ajaxUpdateBasketData(dataSend, file) {
    
    $.ajax({
        type: "GET",//Я думаю что используется GET - потому что база изначальна уже была готовая. Из базы выдёргивается только id товара и его
                    //количество
 
        url: file, //файл inc/shop.php
        data: dataSend, //Пример строки данных: p=2&shop_id=82&count=1
        
    }).done(function (data) {
        
    console.log(data);
            
        existsUpdateData = 1;
        if (data == 'new')
            showAlert(1, 'Товар удачно добавлен в корзину');
        if (data == 'update')
            showAlert(1, 'Товар удачно обновлен в корзине');
        if (data == 'delete')
            showAlert(2, 'Товар удален из корзины');
    }); 
}
Но теперь другая проблема. Не знаю как shop.php написать чтоб работал с корзиной товаров правильно. До меня человек делал http://dev.thelandpage.ru/body/. Доступов не осталось Мне надо вот сюда http://bodys.top/ точную копию сделать. Сейчас пока когда жму "В корзину" - появляется "Товар удачно добавлен в корзину" и всё )).
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
10.05.2016, 14:39 6
Это вам уже на фриланс, или начните делать и если будут вопросы спрашивайте.
0
[FENIX]
1 / 1 / 2
Регистрация: 09.10.2009
Сообщений: 223
15.05.2016, 18:08  [ТС] 7
Это вроде работает, корзина появляется, но теперь другая проблема появилась. Если пользователь жмёт кнопку "В корзину" - значению value элемента #form-buy-data присваивается название товара, и его количество. И потом если пользователь захочет добавить в корзину ещё какой-нибудь товар, и жмёт "В корзину" - то вместо того, чтобы значение нового товара "добавлялось" в #form-buy-data, оно меняется, т.е. просто меняется на новое, а это не есть гуд, т.к. при оформлении заказа форма будет брать этот атрибут value, а там будут не все товары, а только последний, может кто знает как это исправить? Вот код script2.js (точку останова ставим на 149 строке, там где var mss = data.split(';')):

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
var basketAllShop = 0;
var basketAllPrice = 0;
var existsUpdateData = 1;
 
var tlp = new TheLandPage();
 
$(document).ready(function () {
  // Кешируем объект окна
  $window = $(window);
  $('section[data-type="background"]').each(function () {
    var $bgobj = $(this); // Назначаем объект
    $(window).scroll(function () {
      // Прокручиваем фон со скоростью var.
      // Значение yPos отрицательное, так как прокручивание осуществляется вверх!
      var yPos = -($window.scrollTop() / $bgobj.data('speed'));
      // Размещаем все вместе в конечной точке
      var coords = '50% ' + yPos + 'px';
      // Смещаем фон
      $bgobj.css({backgroundPosition: coords});
    });
  });
 
  //
  // Shop buy
  //
 
  // Update basket after loading page
  setInterval(updateBasket, 500);
 
  // Add new shop in user list
  $('.add-shop-card').add('.shop-t-delete').on('click', function () {
    var th = $(this);
    var dataShopId = parseInt(th.attr('data-shop'));
    var dataCount = parseInt(th.attr('data-count'));
    //
    var data = "p=2&shop_id=" + dataShopId + "&count=" + dataCount;
    ajaxUpdateBasketData(data, 'inc/shop.php');
  });
 
  // Delete shop out basket
  $('body').on('click', '.shop-update-count', function () {
    var th = $(this);
    var dataShopId = parseInt(th.attr('data-shop'));
    var dataCount = parseInt(th.attr('data-count'));
    //
    var data = "p=2&shop_id=" + dataShopId + "&count=" + dataCount;
    ajaxUpdateBasketData(data, 'inc/shop.php');
  });
 
  // Show and hide full list of shops buy
  $('.show-all-buy').on('click', function () {
    var fullListShops = $('#shop-all-list');
    //
    $('.show-all-buy').removeClass('hidden');
    $(this).addClass('hidden');
    //
    if (fullListShops.hasClass('hidden')) {
      fullListShops.removeClass('animated fadeOutDown');
      fullListShops.addClass('animated fadeInUp');
      fullListShops.removeClass('hidden');
    }
    else {
      fullListShops.removeClass('animated fadeInUp');
      fullListShops.addClass('animated fadeOutDown');
 
      setTimeout(function () {
        fullListShops.addClass('hidden');
      }, 500);
    }
  });
 
  // Form send data
  tlp.ajaxForm('#form1', 'send.php');
  tlp.ajaxForm('#form2', 'send.php');
  tlp.ajaxForm('#form3', 'send.php');
  tlp.ajaxForm('#form6', 'send2.php');
 
});
 
 
$(window).scroll(function () {
  //
  // Change shop menu
  //
  var windowTop = $(window).scrollTop() + 80;
  var headerMenuShop = $('#header-shop-menu');
  var menuShop = $('#menu');
  var blockRegion = $('#box-5-w').offset().top + $('#box-5-w').height();
 
  var animShow = 'fadeInUpRubber';
  var animHidden = 'slideOutDown';
 
  if (menuShop.offset().top < windowTop) {
    // If user not visible block of shop
    if (blockRegion < windowTop) {
      if (!headerMenuShop.hasClass('hidden')) {
        // Animated
        var menuItems = $('.menu-5-small');
        menuItems.removeClass('animated ' + animShow);
        menuItems.addClass('animated ' + animHidden);
        setTimeout(function () {
          headerMenuShop.addClass('hidden');
        }, 500);
      }
    }
    // If user visible block of shop
    else {
      if (headerMenuShop.hasClass('hidden')) {
        headerMenuShop.removeClass('hidden');
        // Animated
        var menuItems = $('.menu-5-small');
        menuItems.removeClass('animated ' + animHidden);
        menuItems.addClass('animated ' + animShow);
      }
    }
  }
  // If user higher block of shop
  else {
    if (!headerMenuShop.hasClass('hidden')) {
      // Animated
      var menuItems = $('.menu-5-small');
      menuItems.removeClass('animated ' + animShow);
      menuItems.addClass('animated ' + animHidden);
      setTimeout(function () {
        headerMenuShop.addClass('hidden');
      }, 500);
    }
  }
});
 
 
//
// Work with shop basket
//
 
function updateBasket() {
  if (existsUpdateData == 1) {
    var file = 'inc/shop.php';
    var basketBlock = $('#shop-card-block');
    var basketItemsCount = $('#basket-items-count');
    var basketItemsPrice = $('#basket-items-price');
    var formBuyData = $('#form-buy-data');
    // Update counters
    $.ajax({
      type: "GET",
      url: file,
      data: "p=0"
    }).done(function (data) {
        var mss = data.split(';');
        basketAllShop = mss[0];
        basketAllPrice = mss[1];
        // update elements
        basketItemsCount.html(basketAllShop);
        basketItemsPrice.html(basketAllPrice);
        formBuyData.val(mss[2]);
        updateBasketShowState();
      });
    // Update html in basket
    $.ajax({
      type: "GET",
      url: file,
      data: "p=1"
    }).done(function (data) {
        basketBlock.html(data);
      });
    existsUpdateData = 0;
  }
}
 
function updateBasketShowState() {
  var basket = $('#shop-basket');
  // Update basket bottom state
  if (basketAllShop > 0) {
    basket.removeClass('hidden');
    basket.removeClass('animated fadeOutDown');
    basket.addClass('animated fadeInUp');
  }
  else {
    basket.removeClass('animated fadeInUp');
    basket.addClass('animated fadeOutDown');
    setTimeout(function () {
      basket.addClass('hidden')
    }, 500);
  }
}
 
function ajaxUpdateBasketData(dataSend, file) {
  $.ajax({
    type: "GET",
    url: file,
    data: dataSend
  }).done(function (data) {
      existsUpdateData = 1;
      if (data == 'new')
        showAlert(1, 'Товар удачно добавлен в корзину');
      if (data == 'update')
        showAlert(1, 'Товар удачно обновлен в корзине');
      if (data == 'delete')
        showAlert(2, 'Товар удален из корзины');
    });
}
 
function showAlert(type, text) {
  var obj = $('.alert-success');
  if (type == 2) {
    obj = $('.alert-fail');
  }
  obj.html(text);
  obj.removeClass('hidden');
  obj.removeClass('animated fadeOut');
  obj.addClass('animated fadeIn');
  setTimeout(function () {
    obj.removeClass('animated fadeIn');
    obj.addClass('animated fadeOut');
    setTimeout(function () {
      obj.addClass('hidden');
    }, 1000);
  }, 2000);
}
 
/*
 * Создаем элементы HTML5 для IE
 */
 
document.createElement("article");
document.createElement("section");
А вот файл shop.php и basket.class.php, который отдаёт js-скрипту обработанные данные:

shop.php:

PHP
1
2
3
<?php
include_once "../inc/basket.class.php";
Basket::process();
basket.class.php:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<?php
 
class Basket {
 
  static $error = 0;
  static $response = '';
  static $product = array();
  static $process = 0;//0 - вывод продукта, 1 - вывод корзины, 2 - добавление/удаление товара
  static $count = 0;//0 - удаление продукта
  static $do = 0;//0 - удаление продукта
 
  static function process() {
 
    include_once "../inc/config.php";
    include_once "../inc/mysqli.class.php";
 
    DB::connect(DBUSER, DBPASS, DBNAME, DBHOST,1);
 
    if (mysqli_connect_errno()) {
      echo 'ќшибка подключени¤: ' . mysqli_connect_errno();
      die();
    }
 
    session_start ();
 
    self::$process = (int)(isset($_GET['p']) ? $_GET['p'] : 0);
 
    switch (self::$process) {
      case -1:
        unset($_SESSION['basket']);
      default:
      case 0:
        self::get_product();
        break;
      case 1:
        self::get_basket();
        break;
      case 2:
        self::add_remove_product();
        break;
    }
 
    self::complete();
 
  }
 
  static function get_basket() {
 
    $template = '
      <div class="shop-t">
        <div class="shop-update-count shop-t-delete" data-shop="{product_id}" data-count="0">+</div>
        <div class="shop-t-photo"><img src="{img_path}"/></div>
        <div class="shop-t-name">{product_name}</div>
        <div class="shop-t-price">{price} руб.</div>
        <div class="shop-t-count">
            <span class="shop-update-count shop-t-count-minus" data-shop="{product_id}" data-count="0">-</span>
            <span class="shop-t-count-num">{count}</span>
            <span class="shop-update-count shop-t-count-plus" data-shop="{product_id}" data-count="2">+</span>
        </div>
      </div>
    ';
 
    $html = '';
    if (isset($_SESSION['basket'])) {
      foreach ($_SESSION['basket']['products'] as $id => $prod_arr) {
 
        if ( $prod_arr['count'] < 1) {
          continue;
        }
 
        $t = $template;
 
        $t = str_replace('{product_id}',    $prod_arr['id'], $t);
        $t = str_replace('{product_name}',  $prod_arr['name'], $t);
        $t = str_replace('{price}',         $prod_arr['price'] * $prod_arr['count'], $t);
        $t = str_replace('{count}',         $prod_arr['count'], $t);
        $t = str_replace('{img_path}',      $prod_arr['basket_img'], $t);
 
        $html .= $t;
 
      }
    }
 
    self::$response = $html;
 
  }
 
  static function get_product() {
 
    if (isset($_SESSION['basket'])) {
 
      //print_r($_SESSION['basket']['products']);
      $sum = 0;
      $cnt = 0;
      foreach (  $_SESSION['basket']['products'] as $id => $prod_arr ) {
        if ($prod_arr['count'] < 1) {
          continue;
        }
        //print_r($prod_arr);
        $sum = $sum + $prod_arr['price'] * $prod_arr['count'];
        $cnt++;
      }
 
      if ($sum == 0) {
        self::$response = '0;0;';
      } else {
        self::$product = $_SESSION['basket']['products'][ $_SESSION['basket']['last_id'] ];
        //self::$response =  count($_SESSION['basket']['products']) . ';' . $sum . ';' . self::$product['name'] . '(' . $_SESSION['basket']['products'][self::$product['id']]['count'] . ')';
        self::$response =  $cnt . ';' . $sum . ';' . self::$product['name'] . '(' . $_SESSION['basket']['products'][self::$product['id']]['count'] . ')';
      }
    }
 
 
  }
 
  static function complete() {
    DB::close();
 
    switch (self::$error) {
      case 0:
 
        switch (self::$process) {
          case -1:
            header('Location: /');
          case 0:
            break;
          case 1:
            break;
          case 2:
            if (!isset($_SESSION['basket'])) {
              $_SESSION['basket'] = array('last_id', 'products');
            }
            $_SESSION['basket']['products'][self::$product['id']] = self::$product;
            $_SESSION['basket']['last_id'] = self::$product['id'];
            self::$response = self::$do;
            break;
        }
 
        break;
      case 1:
        //в базе продукт не найден
        break;
      case 2:
        //количество продукта == 0
        break;
      case 3:
        //не верные параметры запроса
        break;
    }
 
    echo self::$response;
    exit;
 
  }
 
 
 
  static function add_remove_product() {
 
    $product_id = (int)(isset($_GET['shop_id']) ? $_GET['shop_id'] : 0);
    self::$count = (int)(isset($_GET['count']) ? $_GET['count'] : -1);
 
    if ($product_id == 0 || self::$count == -1) {
 
      self::$error = 3;
 
    } else {
 
 
      if ( isset($_SESSION['basket']['products'][$product_id]) ) {
 
        if (self::$count == 1 || self::$count > $_SESSION['basket']['products'][$product_id]['count']) {
          $dir = 1;
        } elseif (self::$count < $_SESSION['basket']['products'][$product_id]['count']) {
          $dir = -1;
        } else {
          $dir = 1;
        }
 
        if ($dir == 1) {
          self::$do = 'update';
        } else {
          self::$do = 'delete';
        }
 
        $_SESSION['basket']['products'][$product_id]['count'] = $_SESSION['basket']['products'][$product_id]['count'] + $dir;
        self::$product = $_SESSION['basket']['products'][$product_id];
 
 
        if ($_SESSION['basket']['products'][$product_id]['count'] < 1) {
          unset($_SESSION['basket']['products'][$product_id]);
        }
 
      } else {
 
        $sql = "
          select * from products where id = " . $product_id. "
        ";
 
        $q = DB::query( $sql );
 
        if (!($row = DB::get_row($q))) {
          self::$error = 1;
          exit;
        }
 
        if ($row['count'] < 1) {
          self::$error = 2;
          exit;
        }
 
        self::$product = $row;
        if (strlen(self::$product['name']) > 41) {
          self::$product['name'] = substr(self::$product['name'], 0, 40) . '..';
        }
        self::$do = 'new';
 
      }
 
    }
 
  }
 
 
}
Как недавно выяснилось, это копия вот этого: http://dev.thelandpage.ru/body/ - там при добавлении нового товара в атрибут value значение добавляется, а не меняется.
0
15.05.2016, 18:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 18:08

Не передаются данные с Java в PHP
По идеии, этот код должен передавать значение переменной email в переменную на...

Данные из HTML-формы не передаются в PHP
Помогите, пожалуйста, начинающему! Есть HTML- файл: &lt;html&gt; &lt;head&gt; ...

Данные на сервер передаются, но PHP не понимает что пришел именно файл..
Нужно: передать файл (картинка.жпг) на сервер методом POST (принимает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru