Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> POST запрос и массивы
arogorns  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 26
Пользователь №: 42151
На форуме: 1 год, 12 дней
Карма:




Гутен таг всем.

Вопросец следующий.

Есть страница, на которой js-ом формируется массив объектов.
Позже при нажатии на кнопку часть данного массива должна обработаться и новый массив должен передаться пост-запросом из js в контроллер (пишу под симфони2).

И тут столкнулся с тем, что у меня Request отказывается видеть этот самый новый массив. передаю просто строку - видит. передаю объект - превращает в массив и тоже прекрасно видит. А вот массив объектов - просто игнорирует .

С чем это может быть связано?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Да много с чем.
Код давай.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arogorns  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 26
Пользователь №: 42151
На форуме: 1 год, 12 дней
Карма:




скорее всего дело в js

var local = [];
$.each(products, function(key, value){
product = value;

if (typeof $('input[name *= \''+product.id+'\']')[0] !== "undefined") {
quantity = $('input[name *= \''+product.id+'\']')[0].value;
if (quantity != 0) {
if ((!('quantity' in product)) || product.quantity == 0) {
product['quantity'] = quantity;
}

if ((!('isSoldPerMeter' in product)) || product.isSoldPerMeter == '')
product['quantity'] = Math.round(product.quantity);
local[product.id] = product;

}
}
}
);

var data = {
'modal': true,
'products': product,//local <----- при product - работает. а local - не видит
};
show_or_update_modal(LOCALE + '/basket/insert', data);


Это сообщение отредактировал arogorns - 20.05.2016 - 16:47
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arogorns  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 26
Пользователь №: 42151
На форуме: 1 год, 12 дней
Карма:






if ($request->request->get('modal') !== null){

$products = $request->request->get('products');
foreach ($products as $data)..........

вот код в контроллере. if срабатывает , а products = null
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Вот так работает:
var products = [
{a: 1, b: 2},
{a: 10, b: 20},
{a: 100, b: 200}
];
$.ajax({
method: 'POST',
url: "{{ path('ajax') }}",
data: { products: products }
})
.done(function(res) {
// ...
});
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arogorns  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 26
Пользователь №: 42151
На форуме: 1 год, 12 дней
Карма:




пока сделал, чтобы просто по отдельности элементы передавались. дальше буду думать

забыл дать , куда дата посылается


function show_or_update_modal(url, data)
{
var existing_modal = $('#main-modal');
var existing_modal_dialog = $('#main-modal-dialog');

if ((existing_modal.data('bs.modal') || {}).isShown) {
existing_modal_dialog.load(url, data, function() {
fnReloadMiniBasket();
});
} else {
existing_modal_dialog.load(url, data, function() {
existing_modal.modal("show");
fnReloadMiniBasket();
});
}
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 10 дней
Карма: 170




Хочется нам того или нет, но http протокол - это в первую очередь протокол передачи текста.
Цитата
HyperText Transfer Protocol, «протокол передачи гипертекста»

Поэтому, чтобы не наступать на грабли, нужно следовать стандартам.
Сказано текстовый, значит и передовать в тексте.
Тем более, что сколько браузеров, столько и яваскрипт-движков у каждого. И доверять тому, что браузер корректно сериализует объект и отправит текстом его по http можно, если много свободного времени.

Поэтому:
var a = [{a:1, b:1}, {a:2,b:2}, {a:3,b:3}];
var json = JSON.stringify(a);
console.log(json); // [{"a":1,"b":1},{"a":2,"b":2},{"a":3,"b":3 }]
// отдавай строку серверу, там встречай JSON, парси его и т.д.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса