Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax загрузка страницы содержащую jqGrid / 15 сообщений из 15, страница 1 из 1
02.03.2010, 17:42:35
    #36497937
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
Добрый день. Возникла проблема, и никак немогу справиться. У меня есть страница содержащая компонент jqGrid. Представляет из себя 2 грида содержащих группы товара, и товар в этих группах. Страница зовется - 'gridgoods.html'

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Подбор номенклатуры</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="stylesheet" type="text/css" media="screen" href="jqgrid/themes/sand/grid.css" />
	<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />  
</head>
<body>
	<!-- body start -->
	<hr color="#ff0000" width="90%">
	<table border= 0  cellpadding="0" cellspacing="0" align="center"><tr><td valign="top">
		<table id="listMaster" class="scroll" style=" float: left;"></table>
		<div id="pagerMaster" class="scroll" style="text-align:center;"></div>
	</td><td valign="top">
		<table id="listDetail" class="scroll" style=" float: left;"></table>
		<div id="pagerDetail" class="scroll" style="text-align:center;"></div>
	</td></tr></table>
	<script type="text/javascript" src="java/jquery-1.3.1.min.js"></script>
	<script type="text/javascript" src="jqgrid/jquery.jqGrid.js"></script>
	<script type="text/javascript" src="js/grid.locale-ru.js"></script> 
        <script type="text/javascript">
		/* Master table */
		jQuery(document).ready(function()
		{
			jQuery('#listMaster').jqGrid(
			{
				url: 'php/master.php',
				height:  307 ,
				caption: 'Группы',
				imgpath: 'jqgrid/themes/basic/images',
				datatype: 'json',
				colNames: ['#', 'Наименование'],
				colModel: [
							{name: 'numStr', index: 'numStr', width:  15 },
							{name: 'nameGroup', index: 'nameGroup', width:  200 , align: 'left'}
						  ],
				sortname: 'numStr',
				sortOrder: 'asc',
				multiSelect: 'false',
				onSelectRow: function (ids)
							{
								//Скрипт обновляющий дочернюю таблицу
							}
			});
			var lastSel; 
			jQuery('#listDetail').jqGrid(
			{
				url: 'php/getdata.php?detail=1&id=0',
				height:  307 ,
				caption: 'Номенклатура',
				imgpath: 'jqgrid/themes/basic/images',
				datatype: 'json',
				mtype: 'POST',
				colNames: ['№', 'Код', 'Наименование', 'Заказ', 'Цена', 'Валюта', 'Вес (брутто)',''],
				colModel: [
                			{name:'numInGroup', index:'numInGroup', width: 30 },
                			{name:'kodFirm', index:'kodFirm', width: 90 },
                			{name:'surName', index:'surName', width: 300 , align:'left'},
							{name:'count', index:'count', width: 50 , align:'center', editable: true}, //, edittype: "text"
                			{name:'price', index:'price', width: 60 , align:'right'},
							{name:'curName', index:'curName', width: 50 , align:'center'},
							{name:'weight', index:'weight', width: 60 , align:'center'},
							{name:'а', index:'а', width: 13 , align:'center'}
						  ],
				sortname: 'surname',
				sortOrder: 'asc',
				multiSelect: 'false',
				onSelectRow: function(id)
							{
								if ( id && id!== lastSel )
								{
									jQuery('#listDetail').restoreRow(lastSel);
									jQuery('#listDetail').editRow(id, true);
									lastSel = id;
								}
							},
				editurl: 'php/saveeditgrid.php'
			});
		});
	</script>
<!-- body end -->
</body>
</html>
все на ней работает и все прекрасно. В отдельных случаях, по мере надобности, я ее включаю с помощью PHP в другие страницы. Вот таким способом require('gridgoods.html'), и тоже все работает и никаких проблем.

Но мне понадобилось эту страницу в ключить в особо тяжелую страницу, которую весьма неохота перегружать и поетому решил подгружать ее с помощью Ajax. На нужной мне странице описал что брать и куда ложить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    jQuery("#mClick").click(function(){
		jQuery.ajax({
			type: 'GET',
			url: 'gridgoods.html',
			success: function(data){
						divBoxLoadID.hide();
						divBoxLoadID.empty();
						divBoxLoadID.html(data);
						divBoxLoadID.show();
						alert(data);
				 	 }
				});
		})

         })
Страничка подгружается, в нужном месте. Выводится все кроме самого грида, и никак непойму в чем дело.
Помогите, плиззз, кто чем может.

Заранее оччень благодарет
...
Рейтинг: 0 / 0
03.03.2010, 11:31:14
    #36499195
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
IDVsbruck
Ajax запрос возвращает полностью весь код вызываемой страницы.

Может ли быть, что скрипты java, вызываемой страницы, не отрабатываются? Если да, то как бы их заставить отработаться.
...
Рейтинг: 0 / 0
03.03.2010, 12:05:13
    #36499332
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
"jQuery.ajax" создаёт iframe и вставляет в него страницу?
...
Рейтинг: 0 / 0
03.03.2010, 12:12:52
    #36499360
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_st"jQuery.ajax" создаёт iframe и вставляет в него страницу?

jQuery.ajax заполняет слой - divBoxLoadID полученным содержимым страницы 'gridgoods.html'
...
Рейтинг: 0 / 0
03.03.2010, 12:28:54
    #36499418
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
т.е. в одну страницу пытаетесь вставить другую страницу? Такое возможно с фреймами. Иначе представьте, что у вас есть страница, в ней есть div и вы в этот див пытаетесь вставить ещё одну страницу. Получается на одной странице у вас два доктайпа, два head, два body, что впринципе бессмысленно. Тем более jquery по умолчанию подгружает данные вроде через innerHTML и скрипты там невозможны. Для выполнения скриптов, их нужно отделить от html и выполнить через eval.
...
Рейтинг: 0 / 0
03.03.2010, 12:35:07
    #36499450
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_st,

Попробуйте - получится. Ничего лишнего не будет.
...
Рейтинг: 0 / 0
03.03.2010, 12:58:07
    #36499533
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_stт.е. в одну страницу пытаетесь вставить другую страницу? Такое возможно с фреймами. Иначе представьте, что у вас есть страница, в ней есть div и вы в этот див пытаетесь вставить ещё одну страницу. Получается на одной странице у вас два доктайпа, два head, два body, что впринципе бессмысленно. Тем более jquery по умолчанию подгружает данные вроде через innerHTML и скрипты там невозможны. Для выполнения скриптов, их нужно отделить от html и выполнить через eval.

Просто эта страница используется в разных местах. И в основном как самостоятельная. То, что получается дублирование DOCTYPE, head, body нестрашно, во всяком случае пока никаких проблем незаметил. Тем более, что у меня в таком случае отпадают проблемы с доставкой настроек для jqGrid в вызывающую страницу. Все описания присутствуют в вызываемой странице.

st_st Для выполнения скриптов, их нужно отделить от html и выполнить через eval.

Имеется в виду. Мой скрипт выделить из страницы, хранить в отдельном файле и вставить в слой результат работы функции eval()

Что-то вроде этого:
divBoxLoadID.append(eval(myScript.js))

Или я что-то не так понял.
...
Рейтинг: 0 / 0
03.03.2010, 13:07:34
    #36499565
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
ShSerge
Пробовал раньше, когда разбирался с XHR.
Вот только зачем передача ненужных данных?
...
Рейтинг: 0 / 0
03.03.2010, 13:16:08
    #36499601
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
авторdivBoxLoadID.append(eval(myScript.js))
Попробуйте например так, эксперименты идут на пользу.
...
Рейтинг: 0 / 0
03.03.2010, 13:42:40
    #36499713
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_stавторdivBoxLoadID.append(eval(myScript.js))
Попробуйте например так, эксперименты идут на пользу.


Эхххх... несфортило. Буду дальше репу чесать.
...
Рейтинг: 0 / 0
03.03.2010, 13:59:23
    #36499785
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
А если что-то типа этого:
Код: plaintext
1.
2.
3.
4.
var scriptElem = document.createElement( 'script' );  
scriptElem.setAttribute( 'src' , 'myScript.js' );  
scriptElem.setAttribute( 'type' , 'text/javascript' );  
document.getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElem );  
...
Рейтинг: 0 / 0
03.03.2010, 15:39:42
    #36500141
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_stА если что-то типа этого:
Код: plaintext
1.
2.
3.
4.
var scriptElem = document.createElement( 'script' );  
scriptElem.setAttribute( 'src' , 'myScript.js' );  
scriptElem.setAttribute( 'type' , 'text/javascript' );  
document.getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElem );  


Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
03.03.2010, 16:28:34
    #36500298
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
Эххх... опять терплю фиаско.
Ладно, возьму тайм-аут до завтра.
Утро, вечера мудренее
...
Рейтинг: 0 / 0
03.03.2010, 17:09:06
    #36500467
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
Кроссдоменный пример без всяких библиотек.
Основная страница:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script>
function sendjs() {
var scriptElem = document.createElement( 'script' );
scriptElem.setAttribute( 'src' , 's.js' );
scriptElem.setAttribute( 'type' , 'text/javascript' );
document.getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElem );
}
</script>
<input type="button" value="js" onclick="sendjs()">
<div id="ppp"></div>
s.js (тут ваш gridgoods.html, который выводится на главную страницу):
Код: plaintext
1.
2.
3.
4.
5.
document.getElementById('ppp').innerHTML='yes'; // тут всё, что связано с html
var scriptElem = document.createElement( 'script' );
scriptElem.setAttribute( 'src' , 'sss.js' ); // тут задаётся присоединённый файл скриптов
scriptElem.setAttribute( 'type' , 'text/javascript' );
document.getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElem );
тут содержимое присоединённого файла скриптов (sss.js):
Код: plaintext
1.
alert('xxx_yes');
Вариантов наверное много, всё зависит от фантазии разработчика.
...
Рейтинг: 0 / 0
05.03.2010, 11:38:42
    #36504582
Slavich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ajax загрузка страницы содержащую jqGrid
st_st
Вы гений. МЕГААГРОМНОЕ спасибо. Я ступил.
Все заработало. Вот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
jQuery.ajax({
type: 'GET',
url: loadStr,
success: function(result){
			divBoxLoadID.hide();
			divBoxLoadID.empty();
			divBoxLoadID.append(result);
			var scriptElem = document.createElement( 'script' );  
			scriptElem.setAttribute( 'src' , "http://127.0.0.1/mixgoods/myScript.js" );
			scriptElem.setAttribute( 'type' , 'text/javascript' );  
			document.getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElem );  
 		        divBoxLoadID.show();
	 	 }
});
Я как-то сразу не догнал, что если указать scriptElem.setAttribute( 'src' , "myScript.js" );
то файл скрипта небудет виден т.к. нужно указывать полный путь.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ajax загрузка страницы содержащую jqGrid / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]