Я только размещаю соответствующий код здесь. Я пытаюсь получить доступ к массиву в массиве json. Как получить доступ к массиву внутри массива?
Итак, это код serveride:
$scriptfull = array();
while($r = mysqli_fetch_assoc($resultstmt_scriptfull)) {
$scriptfull[] = $r;
}
$resulterr = array('message' => 'Success',
'fullscript'=>$scriptfull);
header('Content-Type: application/json');
echo json_encode($resulterr);
Я знаю, как получить доступ к массиву JSON в Javascript. Проблема, я не знаю, как получить доступ к базовому объекту, который сам является массивом в массиве JSON.
Когда я делаю:
success: function(output)
{
console.log(output.fullscript);
}
Я вижу результат в консоли
(1)[...]
0:{...}
scriptAA1: "a1"
scriptAA10: "a10"
scriptAA2: "a2"
scriptAA3: "a3"
Но ничего не печатает в HTML, если я пытаюсь
success: function(output)
{
$('.scriptview').html(output.fullscript);
}
Я попытался получить доступ к нему, используя код ниже, но ничего не печатает:
success: function(output)
{
$('.scriptview').html(output.fullscript[1]);
}
То, что вы делаете, пытается напечатать массив javascript объектов в html, который, конечно, не имеет смысла и почему ничего не печатается. Вы можете напечатать массив javascript как строку (которая, вероятно, не такая, как вы хотите), например:
$('.scriptview').html(JSON.stringify(output.fullscript));
Я думаю, вам лучше объяснить, что именно вы пытаетесь напечатать на html.
Edit: Как я понял, вы хотите что-то вроде того, что вы получаете в своей консоли. Для чего-то вроде этого, код ниже будет делать:
var outputString = '';
output.fullscript.forEach(function(object, index){
outputString += '<br> Object with index: ' + index + '<br>';
for (var prop in object){
outputString += 'Property ' + prop + ': ' + object[prop] + '<br>';
}
});
$('.scriptview').html(outputString);
[object Object]
Поскольку вы пытаетесь вывести результат в виде строки, вы можете использовать
success: function(output)
{
$('.scriptview').html(JSON.stringify(output.fullscript));
}
Если вы хотите, чтобы результат был отформатирован с помощью пробелов, третий аргумент метода stringify
делает следующее:
success: function(output)
{
$('.scriptview').html(JSON.stringify(output.fullscript, null, '\t'));
}
Более короткий, читаемый и эффективный способ - просто отображать с использованием text
метода jQuery вместо html
:
success: function(output)
{
$('.scriptview').text(JSON.stringify(output.fullscript, null, '\t'));
}
Это выглядит более аккуратно...