Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как использовать json (https://javascript.ru/forum/jquery/24909-kak-ispolzovat-json.html)

AquaGen 18.01.2012 18:29

как использовать json
 
С json ничего не выходит. Надо типа новостей выводить.
Нигде ничего не нашел, единственное в примерах
$.getJSON('ajax/test.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});


у меня сейчас такой файл:
Код:

{       
        "note":{
                          "title": "Singular sensation",
                          "text": "Beady little eyes",
                          "date": "Little birds pitch by my doorstep",
                          "comments": 1
                        },
        "note":{
                          "title": "Singular sensation34",
                          "text": "Beady li54ttle eyes",
                          "date": "Little 65birds pitch by my doorstep",
                          "comments": 2
                        },
}

И непонятно еще в массивах или объектах новости хранить или как, учебник по json есть где-нибудь?
ну вообщем такой файл, я код вроде изменил, но он ничего не выводит
$.getJSON('test.json', function(data) {
var items = [];

  $.each(data.note, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('#blog');


});

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

Nightmare 18.01.2012 18:41

if (isset($_POST['some_ajx_data'])) {
    $_data = $_POST['some_ajx_data'];
    //TODO: save in db or else

    header('Content-type: application/json');
    json_encode(array('result' => true));
}


$.ajax({
    url: 'ajax.php',
    data: {name: 'John'},
    dataType: 'json',
    success: function(data) {
        try {
            alert('result of operation is:', data.result)
        } catch(e) {
             // error
        }
        finally {
             alert('ajax happened...');
        }
    }
})


JS не может открывать файлы, из-за безопасности(не считаю каких-то версий мозиллы). Идет запрос, приходит ответ. Не более и не менее.

B@rmaley.e><e 18.01.2012 19:29

Цитата:

Сообщение от AquaGen
учебник по json есть где-нибудь?

Какой учебник? JSON — не более чем формат хранения данных, он целиком описывается в нескольких параграфах и картинках на json.org. Почитайте, кстати.

AquaGen 19.01.2012 10:37

что-то ничего не понял во втором посте. php еще зачем-то.
если в test.json
Цитата:

{
"title": "Singular sensation",
все нормально работает.
а если в нем
Цитата:

{
"note":{
"title": "Singular sensation",
то не знаю как сделать.

AquaGen 19.01.2012 10:39

мне надо просто вывести из файла аяксом новости (с jquery), неужели этого никто никогда не делал? нигде примера найти не могу

Pavel M. 19.01.2012 11:07

ниже простой вывод в html строку

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title> - jsFiddle demo</title>
	<script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>
	<script>
	$(function(){

		var data = {   
			"note1": {
					  "title": "Singular sensation",
					  "text": "Beady little eyes",
					  "date": "Little birds pitch by my doorstep",
					  "comments": 1
			},
			"note2": {
					  "title": "Singular sensation34",
					  "text": "Beady li54ttle eyes",
					  "date": "Little 65birds pitch by my doorstep",
					  "comments": 2
			}
		};

		var htmlStr = '<ul>'; // здесь формируем html

		$.each(data, function(key, val) {
			htmlStr += '<li>' + key;
			htmlStr += '<ul>';
			$.each(val, function(key, val) {
				htmlStr += '<li>' + key + ': ' + val + '</li>';
			});
			htmlStr += '</ul>';
			htmlStr += '</li>';
		});

		htmlStr += '</ul>';
			
		$('body').html(htmlStr);

	});

	</script>
</head>
<body></body>
</html>

AquaGen 19.01.2012 11:19

спасибо :)

AquaGen 19.01.2012 11:33

еще что-то не получается
$.getJSON('test.json', function(data) {

  $.each(data, function(key, val) {
		
		 $("#blog").append("<div class='bigblockcontent'><span class='title'><a href='/?do=news&id="+key+"'>"+val['title']+"</a></span><span class='date'>"+val['date']+"</span><span class='act'><ul><li>ответить</li><li>рассказать</li></ul><span class='open'><a href='{tweet_url}'>открыть</a></span></span><p class='text'>"+val['text'].substring(0,200)+"</p><p class='readnews'>"+val['text']+"</p></div>");

  });

});

$("p").click(function(){
	alert();
});

вот не работает на <p> которые добавляются в код с помощью функции выше alert(); да и вообще к стилям не могу применить .click(function() и к id, не работает.

Pavel M. 19.01.2012 11:40

Цитата:

Сообщение от AquaGen
вот не работает на <p> которые добавляются в код с помощью функции выше alert();

alert - пустой, надо alert(123); например написать

Pavel M. 19.01.2012 11:42

Цитата:

Сообщение от AquaGen
а и вообще к стилям не могу применить .click(function() и к id, не работает.

и обработчики надо добавлять после того как html загружен


Часовой пояс GMT +3, время: 22:43.