Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вопрос по jquery

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Pavelbeginner
Отправлено: 13 Марта, 2011 - 15:19:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




В jquery, чтобы вставить html в объект нужно использовать метод html(), а что использовать, чтобы получить html из объекта? я использую тот же метод html(), но возвращается текст, в котором отстутствуют теги. В чистом js есть метод innerHtml, который работает, как мне надо, но поскольку я использую jquery, то хотелось бы узнать, как получить обратно html из объекта?
 
 Top
garvey
Отправлено: 13 Марта, 2011 - 15:25:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




html() - это тот же innerHtml. И он возвращает HTML при правильном использовании. Пригласите ваш код сюда. Очевидно, что вы делаете что-то неправильно.
 
 Top
Pavelbeginner
Отправлено: 13 Марта, 2011 - 15:32:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.     function add_page_content(data)
  3.     {
  4.         $('#page_content').append($(data).html());
  5.     }
  6.  


data - это полученный через ajax html.
(Добавление)
html данные находятся в теге <page_content>данные</page_content>
Сначала я создаю дерево объектов следующим образом $(data),
затем мне нужно получить содержимое тега <page_content> и
я использую метод html(). Затем вставляю все на страницу. Но в итоге на
страницу вставляется голый текст, без разметки, то есть без тегов.
 
 Top
garvey
Отправлено: 13 Марта, 2011 - 15:39:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Цитата:
data - это полученный через ajax html


data - это не HTML. В таком использовании data - это селектор для получения ссылки на DOM-объект.
Примерно так должно быть:
CODE (javascript):
скопировать код в буфер обмена
  1. $('#some-id').html();
 
 Top
Pavelbeginner
Отправлено: 13 Марта, 2011 - 15:47:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




что-то не понял. Я выводил alert'ом содержимое data - это html.
$(data) - создает дерево объектов. Здесь data это не селектор, на место data подставится
html, что в свою очередь создает дерево объектов по-моему.
 
 Top
garvey
Отправлено: 13 Марта, 2011 - 16:27:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Это по вашему. А я советую читать документацию. $(SELECTOR) - получаем элемент или группу элементов.
 
 Top
SAD
Отправлено: 13 Марта, 2011 - 18:28:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




http://forum[dot]jquery[dot]com/topic/jq[dot][dot][dot]rhtml-for-jquery
лучше организовать на чистом js

(Отредактировано автором: 13 Марта, 2011 - 19:29:58)

 
 Top
Pavelbeginner
Отправлено: 13 Марта, 2011 - 21:20:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




garvey пишет:
Это по вашему. А я советую читать документацию. $(SELECTOR) - получаем элемент или группу элементов.


у $() несколько вариантов работы, не только с селектором, вот вам пример:

$(html)

Позволяет создать html-элементы «на лету» из «чистого» HTML. Например, можно создать элемент div, содержащий параграф с текстом «Ба-бах!» и добавить его к элементу с id="body" таким образом:

var my_div = $("<div><p>Ба-бах!</p></div>");
my_div.appendTo("#body");
Или еще короче:

$("<div><p>Ба-бах!</p></div>").appendTo("#body");
Элемент до отработки скрипта:

<div id="body"></div>
Элемент после отработки скрипта:

<div id="body"><div><p>Ба-бах!</p></div></div>
(Добавление)
SAD пишет:
http://forum[dot]jquery[dot]com/topic/jq[dot][dot][dot]rhtml-for-jquery
лучше организовать на чистом js


Данный плагин не помог. Часть тегов пропадает. На чистом js конечно можно организовать, но цель была попрактиковаться с jquery.
(Добавление)
Можно конечно получив html данные сразу подставить в нужное место вот так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('selector').append(data);
  3.  


Все работает, но! Я хочу вернуть в одном запросе страничную навигацию + данные страницы, чтобы не делать два отдельных запроса. Поэтому ответ сервера выглядит вот так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <page_content>
  3.         <tr>
  4.             <td>
  5.                 name
  6.             </td>
  7.             <td>
  8.                 number
  9.             </td>
  10.             <td>
  11.                 cost
  12.             </td>
  13.             <td>
  14.                 description
  15.             </td>
  16.             <td>
  17.                 category
  18.             </td>
  19.         </tr>
  20. </page_content>
  21. <page_navigation>
  22. ...
  23. </page_navigation>
  24.  


Теперь мне нужно получить из этого html'я дерево объектов, делаю следующим образом:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. data_tree = $(data);
  3.  

В результате data_tree является объектом page_content, а page_navigation игнорируется, в общем тот тег, который находится выше, а это page_content преобразуется в дерево, а все, что ниже игнорируется.
Тогда я решил сделать по-другому чуть-чуть, а именно вот так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. object_div = $('<div></div>);
  3. object_div.html(data);
  4.  

Теперь все казалось бы круто. Для того, чтобы получить содержимое страницы и вставить его на страницу нужно сделать следующее:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('#page_content).html(object_div.find('page_content).html());
  3. // здесь $('#page_content) - это div в документе, куда нужно подставить полученные данные
  4.  

В результате все подставилось как надо! За исключением того, что все теги, полученные от сервера куда-то пропали, подставился текст, содержащийся в этих тегах.
Вся проблема в том, что вот этот фрагмент из предыдущего кода возвращает не html, а обычный текст
:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. object_div.find('page_content).html()
  3.  

Вопрос, что за хрень?
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Марта, 2011 - 23:33:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




JSON - вам нужен, и хрени не будет..
(Добавление)
Добавить ответ от сервера в виде чистого html так:
CODE (javascript):
скопировать код в буфер обмена
  1. function add_page_content(data)
  2.   {
  3.   $('#page_content').append(data);
  4.   }

Если нужен один ответ с группой результатов - отправляйте сервером JSON-объект:
PHP:
скопировать код в буфер обмена
  1. $send['content'] = "контент страницы";
  2. $send['paginator'] = "1 2 3 4 5 <b>6</b> 7 8 9 ..";
  3. echo json_encode($send);

И принимая на клиенте:
CODE (javascript):
скопировать код в буфер обмена
  1. function add_page_content(data)
  2.   {
  3.   $('#page_content').append(data.content);
  4.   $('#page_paginator').html(data.paginator);
  5.   }
 
 Top
Pavelbeginner
Отправлено: 14 Марта, 2011 - 00:29:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




А не нужно использовать ф-цию eval, чтобы с полученными данными можно было работать, как с объектами?
И еще небольшой вопрос. Во всех браузерах после получения данных через ajax с последующей подстановкой этих данных на страницу они отображаются, но в мозиле они подставляются, но не отображаются, что за чудеса? фаербагом смотрел - данные подставились, но не отображаются, в чем же дело?
(Добавление)
и небольшой вопросик немножко не по теме. вот код:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.                 <tr id="new_note" style="display:none">
  3.                     <form>
  4.                         <td style="border:1px green solid;">
  5.                             <textarea cols="10" rows="3"></textarea>
  6.                         </td>
  7.                         <td style="border:1px green solid;">
  8.                             <textarea cols="5" rows="3"></textarea>
  9.                         </td>
  10.                         <td style="border:1px green solid;">
  11.                             <textarea cols="5" rows="3"></textarea>
  12.                         </td>
  13.                         <td style="border:1px green solid;">
  14.                             <textarea cols="40" rows="3"></textarea>
  15.                         </td>
  16.                         <td style="border:1px green solid;">
  17.                             <textarea cols="10" rows="3"></textarea>
  18.                         </td>
  19.                     </form>
  20.                 </tr>
  21.  


В фаербаге я смотрю верстку и вижу, что тег form вынесен перед всеми тегами td, то есть вот что я вижу:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.                 <tr id="new_note" style="display:none">
  3.                     <form></form>
  4.                         <td style="border:1px green solid;">
  5.                             <textarea cols="10" rows="3"></textarea>
  6.                         </td>
  7.                         <td style="border:1px green solid;">
  8.                             <textarea cols="5" rows="3"></textarea>
  9.                         </td>
  10.                         <td style="border:1px green solid;">
  11.                             <textarea cols="5" rows="3"></textarea>
  12.                         </td>
  13.                         <td style="border:1px green solid;">
  14.                             <textarea cols="40" rows="3"></textarea>
  15.                         </td>
  16.                         <td style="border:1px green solid;">
  17.                             <textarea cols="10" rows="3"></textarea>
  18.                         </td>
  19.                 </tr>
  20.  


Почему так происходит? А главный вопрос - при отправке формы на сервер будут ли на сервере доступны значения тегов textarea? Ведь тег form не оборачивает теги textarea.

(Отредактировано автором: 14 Марта, 2011 - 01:37:01)

 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Марта, 2011 - 05:37:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Pavelbeginner пишет:
использовать ф-цию eval

Нет, JSON уже "обьект".
Pavelbeginner пишет:
но не отображаются

Pavelbeginner пишет:
style="display:none">

?????????
 
 Top
Pavelbeginner
Отправлено: 14 Марта, 2011 - 06:14:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




DeepVarvar пишет:
Pavelbeginner пишет:
использовать ф-цию eval

Нет, JSON уже "обьект".
Pavelbeginner пишет:
но не отображаются

Pavelbeginner пишет:
style="display:none">

?????????

по-моему вы ошибаетесь на счет джейсона. Да, это по сути уже объект, но, когда получаешь этот объект - это всего лишь строка, ее нужно присвоить переменной, затем вызвать метод eval и передать ему строку с json данными. только тогда мы получим объект.

А display:none я указал потому, что браузер google chrome почему-то выносит тег form над тегами td, хотя у меня в документе теги td обернуты тегом form. Я убирал display:none, все равно данные есть на странице, но они не отображаются.
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Марта, 2011 - 06:25:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Pavelbeginner пишет:
по-моему вы ошибаетесь

В контексте jqurey - ошибаетесь вы
Pavelbeginner пишет:
убирал display:none

Pavelbeginner пишет:
браузер google chrome

Pavelbeginner пишет:
но в мозиле

Так в каком из них? Может в обоих?
 
 Top
Pavelbeginner
Отправлено: 14 Марта, 2011 - 06:59:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




В мозиле, если теги td обернуты в тег form, то теги td просто не отображаются.
В хроме по-другому. Вот код в файле:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.     <tr>
  3.      <form>
  4.             <td style="border:1px green solid;">
  5.                 Наименование<textarea cols="5" rows="3"></textarea>
  6.             </td>
  7.             <td style="border:1px green solid;">
  8.                 Кол-во<textarea cols="5" rows="3"></textarea>
  9.             </td>
  10.             <td style="border:1px green solid;">
  11.                 Стоимость
  12.             </td>
  13.             <td style="border:1px green solid;">
  14.                 Описание<textarea cols="5" rows="3"></textarea>
  15.             </td>
  16.             <td style="border:1px green solid;">
  17.                 Категория<textarea cols="5" rows="3"></textarea>
  18.             </td>
  19.             <td style="border:1px green solid;">
  20.             </td>
  21.         </form>
  22.      </tr>
  23.  


и вот, что я вижу в хроме, когда просматриваю исходный код:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.     <tr>
  3.      <form></form>
  4.             <td style="border:1px green solid;">
  5.                 Наименование<textarea cols="5" rows="3"></textarea>
  6.             </td>
  7.             <td style="border:1px green solid;">
  8.                 Кол-во
  9.             </td>
  10.             <td style="border:1px green solid;">
  11.                 Стоимость<textarea cols="5" rows="3"></textarea>
  12.             </td>
  13.             <td style="border:1px green solid;">
  14.                 Описание<textarea cols="5" rows="3"></textarea>
  15.             </td>
  16.             <td style="border:1px green solid;">
  17.                 Категория<textarea cols="5" rows="3"></textarea>
  18.             </td>
  19.             <td style="border:1px green solid;">
  20.             </td>
  21.      </tr>
  22.  

То есть, как я понимаю, при отправке формы ни один элемент формы, такие как textarea, input не будут доступны на сервере т.к. в хроме форма уже не оборачивает ни один из тегов textarea?
 
 Top
Viper
Отправлено: 14 Марта, 2011 - 07:43:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Pavelbeginner не пробовали сначала w3c валидатором страницу проверить, а уже потом мучать браузеры?

Pavelbeginner и с какого перепугу вы взяли что можно делать так ?
CODE (html):
скопировать код в буфер обмена
  1. <tr>
  2.         <form>
  3.                 <td>
  4. ...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB