Я сделал таблицу заклинаний на 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);
замените print_r($php_array); на echo json_encode($php_array);, хотя вы можете просто echo json_encode($result);, так как это уже массив. Ваша петля foreach на самом деле пустая трата усилий
Куда вы ставите alert(spells_array)? Поскольку он определен как var spells_array = [];, он не должен возвращать значение undefined.
@escapeVelocity А вот spells_array[1] был бы.
@ Джордж, мне плохо! Я только что увидел индекс 1!
Я обновил часть php, чтобы отразить добавление echo json_encode @escapeVelocity alert(spells_array) находится в конце $(document).ready(function()
@QuasarAG, будьте осторожны при наборе текста. alert(spells_array) отличается от alert(spells_array[1]). Первый вернет данные в виде строки, а второй - undefined.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


добавьте эту строку в файл 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 (данные).
Вы используете JSON для отправки данных обратно из вызова Ajax?