Простая проблема JSON - PullRequest
       8

Простая проблема JSON

1 голос
/ 08 июля 2011

Я никогда не работал с JSON, и мне действительно нужно сделать это сейчас, я пробовал кучу примеров со страницы jQuery, но, похоже, у меня не работает.

У меня есть * .php файл, который генерирует строку, так как я понимаю, что именно так я передаю JSON в javascript из PHP. Строка, которую я хочу создать, очень проста:

foreach ($imageList as $img)
{
    echo "{ thumb: 'media/img/t/$img', image: 'media/img/m/$img'},";
}

Так что результат будет что-то вроде (отформатированный)

{
thumb: 'media/img/t/123.jpg',
image: 'media/img/m/123.jpg'
},
{
thumb: 'media/img/t/1234.jpg',
image: 'media/img/m/1234.jpg'
},

и так далее ...

Почему-то я думаю, что это неправильный способ ведения дел, извините, конечно, но, как я уже сказал, я никогда не работал с форматом JSON и едва знаю, что он вообще обозначает.

Я хочу, чтобы эти данные были расположены в массиве javascript, чтобы я мог использовать их в своей галерее, как здесь (3. Использование JSON) http://galleria.aino.se/docs/1.2/references/data/

Может ли кто-нибудь помочь мне с этим? Я знаю, что это, вероятно, очень простая проблема, но для меня, как для новичка, это трудно понять. Когда я знаю, как решить эту проблему, я, вероятно, пойму, как она работает и как ее использовать, но теперь я действительно понятия не имею.

Ответы [ 8 ]

2 голосов
/ 08 июля 2011

Я предлагаю вам использовать json_encode(), поскольку у вас есть несколько проблем в созданной строке объекта json.

<?php

$json_image_list = array();
foreach ($imageList as $img){
    $json_image_list[] = array(
        'thumb' => "media/img/t/$img",
        'image' => "media/img/m/$img",
    );
}

echo json_encode($json_image_list);

?>

Итак, вы знаете, вот несколько проблем в вашем json :

  1. Массив должен быть в скобках ('[' & ']').
  2. Свойства вашего объекта должны быть заключены в двойные кавычки.

Также см. Нижнюю часть JSON.org для пакетов, которые уже написаны для языков, которые вы будете использовать в Интернете, поэтому вам не придется писать свой собственный.

2 голосов
/ 08 июля 2011

JSON недействителен , не пишите свой собственный сериализатор, уже есть очень хорошие

1 голос
/ 08 июля 2011

Сгенерированная строка недопустима в формате JSON.Все эти объекты должны быть в массиве, а имя свойств должно быть заключено в кавычки.Почему бы вам не использовать json_encode ?

1 голос
/ 08 июля 2011

Рекомендуется использовать json_encode.Он делает всю работу за вас и переводит переменные PHP в строки JSON.

1 голос
/ 08 июля 2011

Не создавайте свой собственный JSON.используйте json_encode($some_php_data_structure), чтобы сделать все это за вас.В противном случае вам придется самостоятельно убегать / заключать в скобки, и в какой-то момент вы что-то упустите и в итоге получите плохой JavaScript, который убьет все ваши клиентские скрипты.

Все, что вам нужно сделать, этосоздайте структуру данных в PHP, передайте ее json_encode () , и все готово.

0 голосов
/ 08 июля 2011

Используя php решение Paul DelRe , вы можете получить доступ к своему изображению данных с помощью этого кода jquery и, конечно, выбрать (триггер) «щелкнуть, изменить и т. Д.»

$.ajax({
  type: "POST",
      url: "yourfile.php",
      dataType:"json",
      data: Data,
      success: function(result)
      {        
          $("#image").html(result.image); 
      }
    });
0 голосов
/ 08 июля 2011

В ответ на комментарий отправителя выше:

Окей, эта часть, кажется, выполнена, но как мне получить эти данные в массив внутри JS? Использование jQuery ofc ..

Вы можете использовать функцию jQuery getJSON для получения JSON в массив JavaScript.

0 голосов
/ 08 июля 2011

Вы можете заполнить обычный массив в PHP, а затем сделать это, чтобы отобразить JSON:

echo json_encode($your_array);

Тогда вам не нужно беспокоиться о синтаксисе JSON, пока вы его не проанализируете.

...