Как получить доступ к базовому объектному массиву в массиве JavaScript?

1

Я только размещаю соответствующий код здесь. Я пытаюсь получить доступ к массиву в массиве 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]);
        }
  • 0
    Это вопрос JavaScript, а не вопрос JSON - JSON вообще не имеет представления о «базовом объекте». (Да, JSON является подмножеством JavaScript, но этот вопрос выходит за границы этого подмножества).
Теги:
arrays

2 ответа

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);
  • 0
    Я просто хочу напечатать результат для людей в HTML-Div. Я хочу напечатать то, что вижу в журнале консоли. Ваш ответ печатает этот [object Object]
  • 0
    Извините, обновил мой ответ.
Показать ещё 2 комментария
1

Поскольку вы пытаетесь вывести результат в виде строки, вы можете использовать

success: function(output)
{
    $('.scriptview').html(JSON.stringify(output.fullscript));
}

Update1

Если вы хотите, чтобы результат был отформатирован с помощью пробелов, третий аргумент метода stringify делает следующее:

success: function(output)
{
    $('.scriptview').html(JSON.stringify(output.fullscript, null, '\t'));
}

Update2

Более короткий, читаемый и эффективный способ - просто отображать с использованием text метода jQuery вместо html:

success: function(output)
{
    $('.scriptview').text(JSON.stringify(output.fullscript, null, '\t'));
}

Это выглядит более аккуратно...

  • 0
    Да, спасибо, это работает, но я бы хотел, чтобы он печатался так, как будто я вижу в консоли все вертикально, а не один вкладыш.
  • 0
    @Sadie Я добавил еще к ответу
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню