jquery преобразует массив в строку html

#php #jquery #arrays #json

#php #jquery #массивы #json

Вопрос:

как указано в названии. как мне это сделать? я читал на каком-то форуме, чтобы использовать stringify?и как мне это использовать?

PHP:

 $notes = $db->query("SELECT * FROM notes WHERE id_user = '$id_user'");
$output = array();
while($note = $notes->fetch_assoc()) {
  $noting = '<span class="block_note">'.$note['note'].'</span>';
  array_push($output, $noting);
}
$data['ok'] = true;
$data['message'] = $output;
echo json_encode($data);
 

jQuery:

 $.get("include/get_details.php?id_user=1",function(data){
  if (data.ok){
     $.each(data, function(key,id){
        $("#notes").append(data.message);
     })

  }
}, "json");
 

Вывод:

 {
"ok":true,
"message":[
  "<span class="block_note">note1</span>",
  "<span class="block_note">note2</span>",
  "<span class="block_note">note3</span>"
]
}
 

Комментарии:

1. Я не понимаю этого вопроса. Используя json_encode, вы (в некотором смысле) преобразуете массив в строку (или объект). Как вы хотите это использовать? Где ошибка?

Ответ №1:

 $.get("include/get_details.php?id_user=1",function(data){
  if (data.ok){
     $.each(data.message, function(key,value){
        $("#notes").append(value);
     })

  }
}, "json");
 

Комментарии:

1. Спасибо.. я пробовал раньше, по какой-то причине это не сработало .. и все работает нормально. странно .. lol.. большое спасибо 🙂

Ответ №2:

array.join(разделитель)

В вашем случае:

 message = data.message;
html = message.join('');
 

Ответ №3:

Я считаю, что самым простым способом сделать это было бы использовать jQuery .Функция toArray(), а затем javascript join() .

Вот так:

 var myArray = $(".block_note").toArray();
myArray.join("");
 

Ответ №4:

 $.get("include/get_details.php?id_user=1",function(data){
  if (data.ok){
     $.each(data.message, function(key,id){
     $("#notes").append(id);
    });
  }
}, "json");
 

Посмотрите на скрипку здесь http://jsfiddle.net/ryan_s/58cLY /

Ответ №5:

data.message это JavaScript Array , поэтому вы можете просто использовать Array.join метод:

 ...
if (data.ok){
    $("#notes").append(data.message.join(""));
}
...
 

Array Объект также предоставляет различные методы итерации, которые вы должны найти полезными.

PS: вы также можете написать свой PHP-код следующим образом:

 $data = array();
$data['message'] = array();
while($note = $notes->fetch_assoc()) {
    $data['message'][] = '<span class="block_note">' . $note['note'] . '</span>';
}
$data['ok'] = true;