Хранить массив с php на javascript

Я сделал таблицу заклинаний на phpmyadmin, и я пытаюсь получить к ней доступ через запрос ajax и сохранить ее полностью внутри массива javascript.

Load_hero_spell.php:

<?php
include("../php/connect_database.php");

$sth = $bdd->query("SELECT * FROM spells_hero LIMIT 4");
$result = $sth->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC);
$php_array = array();

foreach($result as $row)
{
    echo json_encode($result);
}  
?>

Файл Javacript:

var spells_array = [];

$(document).ready(function()
{
    $.ajax(
    {
        type: "POST",
        url: "../php/load_hero_spell.php",
        success: function(data)
        {
            spells_array = data;
            alert(data);
        },
        error: function() 
        { 
            alert("Request failure"); 
        }    
    });
alert(spells_array[1]);

});

Предупреждение (данные) отображаются примерно так:

Array
(
[0] => Array
    (
        [nick] => Spell 1
        [description] => Description 1
        [icon_dir] => ../../images/icons/spells/AbolishMagic.png
        [ownerID] => 1
    )

[1] => Array
    (
        [nick] => Spell 2
        [description] => description 2
        [icon_dir] => ../../images/icons/spells/AbominationExplosion.png
        [ownerID] => 1
    )
)

но тревожный (spells_array); отображать undefined.

Я хотел бы передать это значение объекту, чтобы я мог сделать что-то вроде

$(".Spell_icon").attr("src", Hero[1].spell[3].description);

Вы используете JSON для отправки данных обратно из вызова Ajax?

Sfili_81 03.12.2018 12:25

замените print_r($php_array); на echo json_encode($php_array);, хотя вы можете просто echo json_encode($result);, так как это уже массив. Ваша петля foreach на самом деле пустая трата усилий

RiggsFolly 03.12.2018 12:27

Куда вы ставите alert(spells_array)? Поскольку он определен как var spells_array = [];, он не должен возвращать значение undefined.

escapeVelocity 03.12.2018 12:28

@escapeVelocity А вот spells_array[1] был бы.

George 03.12.2018 12:28

@ Джордж, мне плохо! Я только что увидел индекс 1!

escapeVelocity 03.12.2018 12:30

Я обновил часть php, чтобы отразить добавление echo json_encode @escapeVelocity alert(spells_array) находится в конце $(document).ready(function()

QuasarAG 03.12.2018 12:34

@QuasarAG, будьте осторожны при наборе текста. alert(spells_array) отличается от alert(spells_array[1]). Первый вернет данные в виде строки, а второй - undefined.

escapeVelocity 03.12.2018 12:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
54
2

Ответы 2

добавьте эту строку в файл php вместо print_r ($ php_array) ;.

  $someJSON = json_encode($php_array);
  echo $someJSON;

вы получите JSON в правильном формате в javascript.

Причина, по которой наш массив выглядит так, связана с тем, что вы используете print_r($php_array); в своем php-скрипте. Этот формат не понимает простой javascript. Я бы посоветовал использовать json_encode($php_array). Таким образом, ваш массив будет преобразован в JSON, который будет понимать javascript.

После этого не забудьте преобразовать полученный JSON в простой массив JS на стороне интерфейса. Вы можете использовать JSON.parse (данные).

Jakub Hubert 03.12.2018 16:02

Другие вопросы по теме