X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Формирования документа с помощью AJAX
yuriy_hb
yuriy_hb
Topic Starter сообщение 8.6.2011, 9:40; Ответить: yuriy_hb
Сообщение #1


Привет форумчане! Помогите разобраться. Нужно оптимизировать ответ сервера (только выборка даных без каких-либо тегов и отправка их клиенту) на запрос с помощью AJAX. Вопрос стоит в скорости получения ответа и формирования кода.
Имеем таблицу, к примеру:
---------------------------------------------
id | type | marka | model | year | ... | email |
---------------------------------------------
С помощью sql-запроса вытягиваем из нее даные.
Затем в РНР-файле формируем ответ и отправляем его клиенту с помощью JSON.
На самом клиенте нужно с помощью JS сформировать HTML-код и подставить соответственно у шаблон страницы.

Отсюда вопрос. Как мне правильно сформировать отправку даных на сервере (тоисть механизм создания отправки, ведь отправляться будет не одно значения, а даные всей таблицы), и второе, как при получении ответа на строне клиента с помощью JS обработать массив переданых даных и сформировать HTML-код.
Спасибо за любую подсказку.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 8.6.2011, 11:07; Ответить: ZhukV
Сообщение #2


Лично я не вижу в этом никакого смысла, поскольку ты будешь больше раз обращаться к серверу, что в результате даст тебе больше нагрузки на сервер + дольше будет загрузка!

АЯКС используется только тогда, когда нужно отправить данные на сервер и при этом не перезагрузить страницу (к примеру, если данный очень малые)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 8.6.2011, 11:19; Ответить: ZhukV
Сообщение #3


При выборке с БД, сформируй класс (желательно), используя функцию mysql_fetch_object()
Обработай данный, как тебе нужно и выдай при помощи - json_encode()

[PHP]
$t = mysql_fetch_object($resource);
$r = new stdClass;
$r->info = $t->info;
// Code
// .......
print json_encode($r);
exit; // Or other operations
[/PHP]

А на клиенте, нужно получать в JSON-е. Если используеш jQuery, то укажи тип возврата данных.
Далее уже вставляй себе как нужно.

Для того, чтобы автоматически подгружать у все дивы инфу, можно попробывать так:
Для дива дай еще какой-то тег, припустим -- remote, где укажишь путь к скрипту, которій должен дать ответ. А потом, при помощи JS, пройдись по всем дивам, которые имеют данный атрибут и сгенерируй запрос.
Ну что-то типа такого
<div remote="_path/to/scripts/me_scripts.php"></div>


[JS]
(function($){
$(document).ready(function(){
$('div[remote!=""]').each(function(){
var $this = this;
var url = $this.attr('remote');
if (!url) { return; }
$.ajax({
url:url,
type:'json',
success:function(data){
$this.html(data.text)
}
})
})
})
})(jQuery)
[/JS]


----------------
P.S.
Писал на быструю руку, не тестил. Думаю смысл понятен.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 8.6.2011, 11:19; Ответить: yuriy_hb
Сообщение #4


Что то я не пойму твой подход. Ты хочешь сказать, что извлекать даные из таблицы (к примеру нужно извлечь 50 строк и передать их клиенту) есть нерационально. Почему? 10 столбцов х 50 строк получается 500 значений (разе передать эти 500 чистых значений без html-кода значений есть проблема для сервера, и при этом будет затрачиватся много времени на передачу???)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 8.6.2011, 12:05; Ответить: yuriy_hb
Сообщение #5


слишком заумно что... не совсем пойму как обработать ответ сервера на строне клиента...На стороне клиента с помощью JS или Query мне нужно принять массив данных в формате JSON, создать html-код (формируем таблицу) и в каждую ячейку табл. поместить соответствующее значение полученое из сервера... вот как можно пороспихивать массив данных в каждую строку... и в каком виде (в виде строки, массива...) мы получаем ответ с сервера???
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
nexus_hb
nexus_hb
сообщение 8.6.2011, 16:36; Ответить: nexus_hb
Сообщение #6


А в чем сложность то?

Делаете AJAX запрос на сервер, там возвращаете данные в формате JSON, а на клиенте как-то так:

[JS]

$.ajax({ url:url,
type:'POST',
dataType: 'json',

success:function(data){
if(data){
var content = '<table>';

$.each(data,function(){
content += '<tr><td>'+data.type+'</td><td>'+data.marka+'</td></tr>';
})

content += '<table>';

$('#result').html(content);
}

}
})


[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 8.6.2011, 18:09; Ответить: yuriy_hb
Сообщение #7


Да, вы правы, это как вариант который можно использовать!!!
А подскажите еще один момент! А как тогда лутчше сформировать на сервере ответ чтобы его затем отправить клиенту. Существует масса способов. Скажем если выбираются одна строка из табл.
то вот такая конструкция:
$arr = array('type' => $type, 'marka'=>$marka...);
echo json_encode($arr);

подходит если даных немного передается клиенту, а если скажем выборка насчитывает строк 100, нужно как-то в массив все это дело заганять... чтобы тогда на строне клиента разобрать его по полочкам.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 8.6.2011, 18:41; Ответить: alexdrob
Сообщение #8


(yuriy1976 @ 8.6.2011, 12:40) *
а даные всей таблицы

Что значит данные все таблицы) если у вас 10 000 записей вы все 10 000 записей за раз отправите?

JSON гибкий, делайте так же как оно в таблице так же и в json, разбивайте на строки и столбцы. что то типа
[
{"id":"значение1", "type":"значение1" ...},
{"id":"значение2", "type":"значение2" ...},
...
]

а в JS уже форматируйте.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 8.6.2011, 19:06; Ответить: yuriy_hb
Сообщение #9


Понятно, спасибо за розяснения...)))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 8.6.2011, 20:37; Ответить: alexdrob
Сообщение #10


Генерируешь на php JSON строки
[PHP]<?php
echo '[
{
"id": "1",
"name": "Alexandr"
},
{
"id": "2",
"name": "Ivan"
},
{
"id": "3",
"name": "Petr"
}
]';
?>[/PHP]

А вот так получаешь
<script src="./js/jquery.js"></script>

<script>

function g()
{


$.getJSON('ajax.php', function(data) {
var items = []

$.each(data, function(key, val) {
items.push("<tr><td>" + val.id + "</td><td>" + val.name + "</td></tr>")
})

$("#res").html('<table border="1"><tr><td>ID</td><td>Name</td></tr>' + items.join('') + '</table>');
})

}

</script>

<div id="res" onclick="g()">Click me!</div>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Раскройте свой потенциал заработка с помощью 2x2 Media Network — вашего пути к выгодным предложениям CPA!
Присоединяйтесь к 2x2 Media Network, вашему надежному партнеру в мире
11 2x2MediaLimited 3299 18.4.2024, 4:22
автор: 2x2MediaLimited
Горячая тема (нет новых ответов) Проверка позиций сайтов в поисковых системах с помощью Positon.ru
Мониторинг продвижения сайтов
183 Positon 179780 12.4.2024, 8:32
автор: Positon
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44944 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) WEB и SMM дизайн — решение ваших бизнес задач с помощью дизайна
8 justburger 5342 6.7.2020, 9:18
автор: justburger
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыЦелевой трафик +30% за 4 месяца с помощью SEO продвижения у Хачатура - отзывы и кейсы в топике
6 Mikejones 3461 9.7.2019, 10:47
автор: Mikejones


 



RSS Текстовая версия Сейчас: 25.4.2024, 16:56
Дизайн