Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вытащить данные из массива (https://javascript.ru/forum/jquery/54916-vytashhit-dannye-iz-massiva.html)

Влад_имир 06.04.2015 14:01

Вытащить данные из массива
 
Вложений: 1
Получил на клиенте ответ см. скриншот. 1 вопрос как мне вытащить оттуда данные
$.each(data[0], function(index, value) {
  alert(index + ': ' + value);
});

не помогло и 2-й вопрос. при поторном запросе аяксом массив , становиться в 2 раза больше, как мне его обнулить или уничтожить?

laimas 06.04.2015 14:09

Это не ответ, это вывод массива в удобной форме посредством print_r(). Для клиента такой вывод не годится - возвращайте клиенту JSON-данные, в крайнем случае строку с разделителем.
А в два раза больше, это что-то с логикой php-обработчика, что не известно, показывайте.

Влад_имир 06.04.2015 14:17

$data= json_encode ($otvet); на серверной стороне , $otvet - массив, в который запихано 3 строковых переменных.
на клиенте
success: function (data)
			{ 
					if (data )
						{
						alert("Пришли данные " + data);
.....

Что не так? А подручными средствами jquery этот массив не раздербанить?

laimas 06.04.2015 14:30

Если json_encode([9176, 1234, 10]), то на клиенте тип ожидаемых данных должен быть указан как json, а в success: function (data) будет достаточно обычного цикла, например:
while(v = data.pop()) {
    alert(v)
}

Если важно получение элементов с массива с первого, тогда .shift() вместо pop(). Единственное условие в этом случае, это отсутствие в массиве значения равного 0, при другом раскладе, это не будет проблемой.

А вот "удвоение" данных при повторном запросе, так json_encode на это не влияет. При каждом запросе массив $_POST будет перезаписываться данными пришедшими с клиента, а значит либо вы что-то не то химичите с $otvet, либо клиент вам шлет такое.

Влад_имир 06.04.2015 14:30

laimas,
Действительно print_r() в обработчике стоял, убрал и ничего не идет

Влад_имир 06.04.2015 14:34

laimas,
т.е лучше $otvet сделать не массивом , а строкой и разделитель вставить точку с запятой. Тогда json_encode заработает ?

Влад_имир 06.04.2015 14:37

laimas,
У меня в обработчике генерится случайное число и до конца работы проги оно должно существовать. Вот я его и гоняю по кругу.

laimas 06.04.2015 14:39

Зачем строкой? Вы отдаете их как json, на клиенте это будет массив. Не было бы у вас по каким-то причинам возможности работать с этим типом данных, можно было бы в этом случае предать и строку, получив из нее на клиенте массив.
У вас что с переданными json-данными на клиенте проблемы?

>в обработчике генерится случайное число

Если речь об одном значение, то к чему тогда массив?

Влад_имир 06.04.2015 14:48

Цитата:

Сообщение от laimas (Сообщение 365210)
Зачем строкой? Вы отдаете их как json, на клиенте это будет массив. Не было бы у вас по каким-то причинам возможности работать с этим типом данных, можно было бы в этом случае предать и строку, получив из нее на клиенте массив.
У вас что с переданными json-данными на клиенте проблемы?

>в обработчике генерится случайное число

Если речь об одном значение, то к чему тогда массив?

Нужно из обработчика передать 3 числа, одно из них случайно сгенерированное, я и подумать не мог, что геморр такой будет. Просто закинул их в массив.

laimas 06.04.2015 14:51

Если три числа, то массив. Геморрой... а с чем именно? В чем проблема то?


Часовой пояс GMT +3, время: 10:08.