Показать сообщение отдельно
  #1 (permalink)  
Старый 30.01.2015, 13:55
Новичок на форуме
Отправить личное сообщение для Ramzay Посмотреть профиль Найти все сообщения от Ramzay
 
Регистрация: 24.06.2008
Сообщений: 2

Помогите передать данные из PHP в яваскрипт
Здравствуйте;
Модуль php генерирует одномерный массив, элементами которого являются одинаковые одномерные массивы переменной длины:
Array
(
    [0] => Array
        (
            [0] => 2
            [id] => 2
            [1] => 1
            [Type] => 1
            [2] => Desk
            [Name] => Desk
            [3] => 
            [Sound] => 
            . . . 
        )
    [1] => Array
        (
            [0] => 5
            [id] => 5
            [1] => 1
            [Type] => 1
            [2] => Table
            [Name] => Table
            [3] => 
            [Sound] => 
            . . . 
        )
    . . . 
    [N] => Array
        (
            [0] => 5
            [id] => 5
            [1] => 1
            [Type] => 1
            [2] => Table
            [Name] => Table
            [3] => 
            [Sound] => 
            . . . 
        )

)

Передается этот массив в ява скрипт так:
print json_encode($curtable);?>

В принципе, массив передается и превращается в ява скрипт объект:
$.ajax
(
 {
  type: "POST",
  data: "key="+table,
  url: "\ajax.php",
  dataType: "json",
  success: function(data)
    {

     alert('data[0][0]='+data[0][0]);       //data[0][0]=2, data[1][2]=Table
     alert('data[0].lenght='+data[0].lenght); // Строка не выполняется
    }  
 }
);

Проблема в том, что массив (или объект) data[0] может быть переменной длинны. Соответственно нужно знать длину этого массива.

Как узнать длину массива?

В принципе, в PHP-ном массиве элементы вида Array[имя]=значение - не нужны. Эти элементы генерируются автоматически и являются избыточными. Может быть их нужно убрать в PHP и оставить элементы вида Array[номер]=значение, что бы в ява скрипте нормально определялась длинна массива?

Последний раз редактировалось Ramzay, 30.01.2015 в 13:59.
Ответить с цитированием