2013-05-23 2 views
0

У Javascript есть эта строка линии, которая предупреждает вас, с каким типом объекта вы работаете. Это следующее:Как создать массив js из объекта json, возвращаемого с php?

alert(Object.prototype.toString.apply(obj)) 

Итак, я работаю с php и js - extjs 4.2, и ищет способ, чтобы передать associative array созданный PHP для Java с помощью json_encode(). Так что я сделал следующее:

<?php echo json_encode($some_array); ?> 

Ext.Ajax.request(
{ 
    url: 'php/parse.php?id='+buttonText, 
    method: 'GET', 
    success: function(response) 
    { 
     //var obj = response; 
     var obj = response.responseText; 
     alert(Object.prototype.toString.apply(obj));      
    }, 
    failure: function(response) 
    { 
     alert('server-side failure with status code ' + response.status); 
    } 
}); 

РНР часть кода находится в файле parse.php, как вы можете видеть из JS кода. Когда я предупреждаю об объекте, он показывает строку json-кодированного php-массива. И js говорит, что obj является string object. Если я сохраню прокомментированную строку без ответаText, js предупреждает, что obj is an Object, но не говорит, какой тип (угадывающий тип json).

То, что я пытаюсь достичь, должен иметь законный массив js, который получит этот php-массив из ответа (ответ является параметром в функции). Благодаря

EDIT: мой PHP структура массива

array 
(
    'vars' => array( 
        [0] => 'name' => '1', 'value' => 2 
        [1] => ...) 
    'file' => array(
        [0] => 'name' => 'aaa.aa' 
        [1] => ...) 
) 

ответ

2

Вы спрашиваете, как разобрать строка из JSON-закодированных данных в объекты JavaScript.

встроенный JSON.parse функция делает именно это.

+0

Так что если я делаю «var arr = JSON.parse (obj)», я получу массив js? – Gago

+0

Помните, что JavaScript отличается между массивом с числовой индексацией (Array) и ассоциативным массивом (Object). Если вы хотите первый, ваш JSON должен выглядеть как '[" item1 "," item2 "]'. Если вам нужен ассоциативный массив, JSON может выглядеть так: '{" key1 ":" item1 "," key2 ":" item2 "}'. Чтобы ответить на ваш вопрос, вы можете получить Array или Object в зависимости от синтаксиса 'obj'. –

+0

Я собираюсь отредактировать структуру массива, которая будет отражена в php выше, можете ли вы ответить на нее на основе структуры ... thanks alot – Gago

Смежные вопросы