У 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] => ...)
)
Так что если я делаю «var arr = JSON.parse (obj)», я получу массив js? – Gago
Помните, что JavaScript отличается между массивом с числовой индексацией (Array) и ассоциативным массивом (Object). Если вы хотите первый, ваш JSON должен выглядеть как '[" item1 "," item2 "]'. Если вам нужен ассоциативный массив, JSON может выглядеть так: '{" key1 ":" item1 "," key2 ":" item2 "}'. Чтобы ответить на ваш вопрос, вы можете получить Array или Object в зависимости от синтаксиса 'obj'. –
Я собираюсь отредактировать структуру массива, которая будет отражена в php выше, можете ли вы ответить на нее на основе структуры ... thanks alot – Gago