Я пытаюсь найти лучший способ отображения результатов на моей странице с помощью вызова Ajax с использованием jQuery, как вы думаете, лучший способ - передать его как JSON или обычный текст? Раньше я работал с вызовами ajax, но не уверен, что предпочтительнее другого, и для версии JSON, как лучше всего читать из файла JSON, сгенерированного страницей PHP, для отображения моих результатов.
Я знаю, что я бы включил .each, чтобы просмотреть их все.

JQuery имеет встроенный тип данных json для Ajax и преобразует данные в объект. PHP% также имеет встроенную функцию json_encode, которая преобразует массив в строку в формате json. Экономит много усилий на синтаксический анализ и декодирование.
Вы можете создать объект jQuery из объекта JSON:
$.getJSON(url, data, function(json) {
$(json).each(function() {
/* YOUR CODE HERE */
});
});
Что-то вроде этого:
$.getJSON("http://mywebsite.com/json/get.php?cid=15",
function(data){
$.each(data.products, function(i,product){
content = '<p>' + product.product_title + '</p>';
content += '<p>' + product.product_short_description + '</p>';
content += '<img src = "' + product.product_thumbnail_src + '"/>';
content += '<br/>';
$(content).appendTo("#product_list");
});
});
Примет объект json, созданный из массива PHP, возвращенного с ключом продуктов. например:
Array('products' => Array(0 => Array('product_title' => 'Product 1',
'product_short_description' => 'Product 1 is a useful product',
'product_thumbnail_src' => '/images/15/1.jpg'
)
1 => Array('product_title' => 'Product 2',
'product_short_description' => 'Product 2 is a not so useful product',
'product_thumbnail_src' => '/images/15/2.jpg'
)
)
)
Чтобы перезагрузить список, просто выполните:
$("#product_list").empty();
А затем снова вызовите getJSON с новыми параметрами.
По соображениям производительности $ (content) .appendTo ("# product_list") должен находиться вне цикла. Добавление к DOM происходит медленно и должно выполняться только один раз.
Да, так и должно быть, и первая строка должна быть content + =, если это так. Однако в некоторых браузерах добавление в DOM происходит быстрее, чем в других :)
Идеальный! Спасибо, Джей, ниже мой HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
<title>Facebook like ajax post - jQuery - ryancoughlin.com</title>
<link rel = "stylesheet" href = "../css/screen.css" type = "text/css" media = "screen, projection" />
<link rel = "stylesheet" href = "../css/print.css" type = "text/css" media = "print" />
<!--[if IE]><link rel = "stylesheet" href = "../css/ie.css" type = "text/css" media = "screen, projection"><![endif]-->
<link href = "../css/highlight.css" rel = "stylesheet" type = "text/css" media = "screen" />
<script src = "js/jquery.js" type = "text/javascript" charset = "utf-8"></script>
<script type = "text/javascript">
/* <![CDATA[ */
$(document).ready(function(){
$.getJSON("readJSON.php",function(data){
$.each(data.post, function(i,post){
content += '<p>' + post.post_author + '</p>';
content += '<p>' + post.post_content + '</p>';
content += '<p' + post.date + '</p>';
content += '<br/>';
$(content).appendTo("#posts");
});
});
});
/* ]]> */
</script>
</head>
<body>
<div class = "container">
<div class = "span-24">
<h2>Check out the following posts:</h2>
<div id = "posts">
</di>
</div>
</div>
</body>
</html>
И мои выходы JSON:
{ posts: [{"id":"1","date_added":"0001-02-22 00:00:00","post_content":"This is a post","author":"Ryan Coughlin"}]}
Я получаю эту ошибку, когда запускаю свой код:
object is undefined
http://localhost:8888/rks/post/js/jquery.js
Line 19
Понял, поменял: $ .each (data.posts, function (i, post) {Итак, data.post -> data.posts
Кафлин / Райан, отредактируйте свой вопрос, чтобы отразить обсуждение ниже. Раздел ответов не предназначен для обсуждения (используйте для этого комментарии или добавьте в свой вопрос дополнительные сведения).