powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+jtable не загружает данные
13 сообщений из 13, страница 1 из 1
php+jtable не загружает данные
    #38914321
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Пишу на php+jquery+jtable
Это для себя делаю.
Проблема заключается в том, что когда я мышкой делаю клик "Загрузить данные".
Появляется макет таблички и следом сообщение: An error occured while communicating to the server.
И данные не загружаются. Я пробовал вручную json (закомментирован) делать аналогичная ошибка.
Гугление не помогло. php 5.3, jquery-1.20.2, jtable-2.4.0, jquery-ui-1.10.3.
Есть оналогичный пробный проект, который я забросил он работает (с БД mysql).
Я с него копировал код, который работал.
Прошу помощи в нахождении ошибки.
Код: php
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.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<link rel="stylesheet" type="text/css" href="css/style.css" />
		<link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />	
		<link rel="stylesheet" type="text/css" href="css/jtablethemes/lightcolor/gray/jtable.css" />
		<script type="text/javascript" src="jquery-1.10.2.js"></script>
		<script type="text/javascript" src="json2.js"></script>
		<script type="text/javascript" src="jquery-ui.js"></script>
		<script type="text/javascript" src="jquery.ui.core.js"></script>
		<script type="text/javascript" src="jquery.ui.widget.js"></script>
		<script type="text/javascript" src="jquery.ui.button.js"></script>
		<script type="text/javascript" src="jquery.ui.dialog.js"></script>
		<script type="text/javascript" src="jquery.ui.datepicker.js"></script>
		<script type="text/javascript" src="jquery.jtable.js"></script>
	</head>
	<body>
		<h3>JQuery+JTable</h3>
		<div id="btnLoadData">
			Показать данные
		</div>
		<div id="tblData"></div>
		<script type="text/javascript">
			$(document).ready(function(){
				$("#btnLoadData").click(function(){
					$("#tblData").jtable({
						title: 'Пробное тестирование',
						selecting: true,
						multiselect: false,
						action: {
							listAction: 'load_data.php'
						},
						fields: {
							Id: {
								title: 'Код'
							},
							Name_K: {
								title: 'Наименование',
								width: '60%'
							}
						},
						ajaxSettings: {
							type:  'POST',
							dataType: 'JSON'
						},
						messages: {
							serverCommunicationError: 'An error occured while communicating to the server.',
							loadingMessage: 'Loading records...',
							noDataAvailable: 'No data available!',
							areYouSure: 'Are you sure?',
							save: 'Save',
							saving: 'Saving',
							cancel: 'Cancel',
							error: 'Error',
							close: 'Close',
							cannotLoadOptionsFor: 'Can not load options for field {0}'
						}
					});
					
					$("#tblData").jtable('load');
				});

			});			
		</script>
		
	</body>
</html>


Код: php
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.
<?php
	/*function createDataJSON(){
		try {
			$row = array('ID'=> 1,'NAME_K' => 'Test');
			$rows = array($row);

			
			//$jTableResult = array();
			/*$jTableResult['Result'] = "OK";
			$jTableResult['Records'] = $rows;*/
	/*		$jTableResult = {(
					 "Result":"OK",
					 "Records":[
					  {"Id":1,"Name":"Benjamin Button","Age":17},
					  {"Id":2,"Name":"Douglas Adams","Age":42},
					  {"Id":3,"Name":"Isaac Asimov","Age":26},
					  {"Id":4,"Name":"Thomas More","Age":65}
					 ]};
				print json_encode($jTableResult);	
		} catch(Exception $ex) {
			$jTableResult = array();
			$jTableResult['Result'] = "ERROR";
			$jTableResult['Message'] = $ex->getMessage();
			print json_encode($jTableResult);
		}
		
	};*/
	$link = mysql_connect("localhost", "parser24", "parser24") or die("Could not connect!");
	mysql_select_db("krasoborud", $link) or die("Could not find db");
	//print ("Connected successfully");
	
	function loadData() {
		$sql = mysql_query("SELECT * FROM TKassa");
		$rows = array();
		while ($row = mysql_fetch_array($sql)) {
			$rows[] = $row;
		};
		//Return result to jTable
		$jTableResult = array();
		$jTableResult['Result'] = "OK";
		$jTableResult['Records'] = $rows;
		print json_encode($jTableResult);
		//
	};
	 loadData();
?>
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914348
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Золотов Константин,

Поведение сервера в части "die()" к какой реакции jtable должно привести на клиенте? Да и кстати, результат выборки, значение переменной $sql никак не проверяется ... к чему на клиенте приведет, например синт. ошибка в самом запросе? А если адаптер базы "где-то" выбросит исключение?

Попробуйте передать такие ответы сервера на клиенте в вывод на страничку типа "ой, ошибка, сервер говорит это: ..." думаю поможет.
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914366
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Золотов Константин,

Поведение сервера в части "die()" к какой реакции jtable должно привести на клиенте? Да и кстати, результат выборки, значение переменной $sql никак не проверяется ... к чему на клиенте приведет, например синт. ошибка в самом запросе? А если адаптер базы "где-то" выбросит исключение?

Попробуйте передать такие ответы сервера на клиенте в вывод на страничку типа "ой, ошибка, сервер говорит это: ..." думаю поможет.
Я специально проверял. вывод есть и эту проверку я убрал для упрощения.
То есть я выводил на страничку массив записей. и к серверу соединяется.
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914431
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Золотов Константин,

Ежели оно "точно соединяется и выдает результат" (зуб даете :) ), то в приведенном коде тупо не вижу КАК jtable должен догадаться про наименования полей в вашей выдаче и что там и куда надо выводить ... разве что из json-результата распарсить на лету... у вас стоит SELECT * - то есть вывод всех полей таблички для каждой записи (может так надо конечно).

Других мыслей пока нет.
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914435
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Хотя ... тогда наверное должно быть иное сообщение, если в табличке более двух полей.
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914461
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Золотов Константин,

Ежели оно "точно соединяется и выдает результат" (зуб даете :) ), то в приведенном коде тупо не вижу КАК jtable должен догадаться про наименования полей в вашей выдаче и что там и куда надо выводить ... разве что из json-результата распарсить на лету... у вас стоит SELECT * - то есть вывод всех полей таблички для каждой записи (может так надо конечно).

Других мыслей пока нет.
Дело в том, что я наименования полей брал с структуры таблицы и пробовал так что явно указывал поля.
И у меня есть рабочий пример (на нем экспериментировать не хочу.) у него такой же селект без указания полей и он работает :)
А тут на котором сейчас экспериментирую. не хочет.
У меня подозрение, что jtable не ловит результат.
Вот 100% рабочий. Который фиг знает когда писал
index.html
Код: html
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.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<link rel="stylesheet" type="text/css" href="css/style.css" />
		<link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />	
		<link rel="stylesheet" type="text/css" href="css/jtablethemes/lightcolor/blue/jtable.css" />	
		
		<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
		<script type="text/javascript" src="js/jquery-ui.js"></script>
		<script type="text/javascript" src="js/jquery.ui.core.js"></script>
		<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
		<script type="text/javascript" src="js/jquery.ui.button.js"></script>
		<script type="text/javascript" src="js/jquery.ui.dialog.js"></script>
		<script type="text/javascript" src="js/jquery.ui.datepicker.js"></script>
		<script type="text/javascript" src="js/jquery.jtable.js"></script>
		<script>
			$(function(){
					$( "#but1,#but2,#but3,#but4,#but5" )
						.button();
					
					$( "input:text" )
						.button().addClass('my-textfield');
					
				});
		</script>
		<script type="text/javascript">
			$(document).ready(function(){
				//$("#dv_data").hide();
				$("#dv_btn_kassy").hide();
				$("#dv_frmTableKassy").hide();
				$("#kassy").click(function(){
					$("#tblData").empty();
					$( "#tblData" ).jtable({
							title: 'Список касс',
							selecting: true,
							multiselect: false,
							//selectingCheckboxes: true,
							selectonRowClick: true,
							actions: {
								listAction: 'kassy.php'
							},
							fields: {
								ID: {
									title: 'Код кассы',
									key: true,
									create: false,
									edit: false,
									list: true,
									width: '6%'
								},
								NAME_K: {
									title: 'Наименование кассы',
									width: '34%'
								},
								ADDRES: {
									title: 'Адресс кассы',
									width: '60%'
								}
							},
							messages: {
								serverCommunicationError: 'Ошибка связи с сервером.',
								loadingMessage: 'Идет загрузка данных ...',
								noDataAvailable: 'Данные отсутствуют'
							},
							selectionChanged: function() {
								// Get selected rows
								var $selectedRows = $("#tblData").jtable("selectedRows");
								// Clear variable data from to Forms frmKassy
								// Очищаем переменные для вставки
								// в форму frmKassy
								var edCode = "";
								var edName_K = "";
								var edAddres = "";
								if ($selectedRows.length > 0) {
									$selectedRows.each(function() {
										var record = $(this).data("record");
										//alert (record.ID);
										// потом сделать вставку в форму frmKassy
										document.forms["frmKassy"].elements["edCode"].value = record.ID;
										document.forms["frmKassy"].elements["edName"].value =  record.NAME_K;
										document.forms["frmKassy"].elements["edAddres"].value =  record.ADDRES;
									}) ;
								} else {
									document.forms["frmKassy"].elements["edCode"].value = "";
									document.forms["frmKassy"].elements["edName"].value =  "";
									document.forms["frmKassy"].elements["edAddres"].value =  "";
								};
							}
						});
						// Load data
						$("#tblData").jtable('load');
					//*****************************************************************
					$("#dv_btn_kassy").show();
				});
				
				$("#operator").click(function(){
					$("#tblData").empty();
					$( "#tblData" ).jtable({
							title: 'Список сотовых операторов и провайдеров',
							actions: {
								listAction: 'operator.php'
							},
							fields: {
								ID_Oper: {
									title: 'Код оператора',
									key: true,
									create: false,
									edit: false,
									list: true
								},
								Name_Oper: {
									title: 'Наименование оператора',
									width: '80%'
								}
							},
							messages: {
								serverCommunicationError: 'Ошибка связи с сервером.',
								loadingMessage: 'Идет загрузка данных ...',
								noDataAvailable: 'Данные отсутствуют'
							}
						});
						// Load data
						$("#tblData").jtable('load');
					//*****************************************************************
					$("#dv_btn_kassy").show();
				});
				
				$("#but1").click(function() {
					$("#dv_frmTableKassy").show();
					document.forms["frmKassy"].elements["edTypeOper"].value = "insert";
					//alert (document.forms["frmKassy"].elements["edTypeOper"].value);
					//$("#edTypeOper").value = "insert"
				});
				
				$("#but2").click(function() {
					$("#dv_frmTableKassy").show();
					document.forms["frmKassy"].elements["edTypeOper"].value = "update";
				});
				
				$("#but3").click(function() {
					document.forms["frmKassy"].elements["edTypeOper"].value = "delete";
					alert("Удалить данные" . document.forms["frmKassy"].elements["edCode"].value);
					alert(msg);
					$.ajax({
						type: 'POST',
						url: 'kassy.php',
						data: '?action=delete&edCode=' . document.forms["frmKassy"].elements["edCode"].value,
						success: function(data) {
							alert(data);
						},
						error: function(xhr, str) {
							alert ('Возникла ошибка ' + xhr.responseCode);
						}
					});
				});
				
				$("#but4").click(function() {
					alert("Записать данные");
					var msg = $("#frmKassy").serialize();
					alert(msg);
					$.ajax({
						type: 'POST',
						url: 'kassy.php',
						data: msg,
						success: function(data) {
							alert(data);
						},
						error: function(xhr, str) {
							alert ('Возникла ошибка ' + xhr.responseCode);
						}
					});
				});
				
				$("#but5").click(function() {
					//$("#frmKassy").resetForm();
					$("#dv_frmTableKassy").hide();
				});
			});	
		</script>
 		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
		<title>
			Список сетевого оборудования и движение финансов
		</title>
	</head>
	<body>
		<table width="100%" class="tblmain">
			<tr>
				<td width="15%" align="center" valign="top">
					Меню
				</td>
				<td>
					Данные
				</td>
			</tr>
			<tr>
				<td width="15%" align="left" valign="top">
					<ul id="menu1">
						<li class="list_menu">
							<div id="kassy">Кассы</div>
						</li>
						<li class="list_menu">
							<div id="oborud">Оборудование</div>
						</li>
						<li id="operator" class="list_menu">
							Сотовый оператор
						</li>
						<li class="list_menu">
							Модель оборудования
						</li>
					</ul>
				</td>
				<td valign="top">
					<div>
						<div id="tblData"></div>
						<div id="dv_btn_kassy">
							<input id="but1" type="button" name="btnAdd" value="Добавить">
							<input id="but2" type="button" name="btnEdit" value="Редактировать">
							<input id="but3" type="button" name="btnDelete" value="Удалить">
						</div>
						<div id="dv_frmTableKassy">
							<form name="frmKassy" id="frmKassy" method="POST" action="kassy.php">
								<table width="80%" border="0">
									<tr align="center">
										<td class="tbl_zagolovok">Номер кассы</td>
										<td class="tbl_zagolovok">Наименование кассы</td>
										<td class="tbl_zagolovok">Адрес кассы</td>
									</tr>
									<tr>
										<td>
											<input id="edTypeOper" type="hidden" name="edTypeOper" value="">
											<input type="text" name="edCode" size="6">
										</td>
										<td>
											<input type="text" name="edName" size="50">
										</td>
										<td>
											<input type="text" name="edAddres" size="60">
										</td>
									</tr>
									<tr align="center">
										<td colspan="3">
											<input id="but4" type="button" name="btnSend" value="Записать">
											<input id="but5" type="button" name="btnCancel" value="Отмена">
										</td>
									</tr>
								</table>
							</form>							
						</div>
					</div>
				</td>
			</tr>
		</table>
	</body>
</html>


kassy.php
Код: php
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.
<?php
	$link = mysql_connect("localhost", "parser24", "parser24") or die("Could not connect!");
	mysql_select_db("krasoborud", $link) or die("Could not find db");
	//print ("Connected successfully");
	
	function loadData() {
		$sql = mysql_query("SELECT * FROM TKassa");
		$rows = array();
		while ($row = mysql_fetch_array($sql)) {
			$rows[] = $row;
		};
		//Return result to jTable
		$jTableResult = array();
		$jTableResult['Result'] = "OK";
		$jTableResult['Records'] = $rows;
		print json_encode($jTableResult);
		//
	};
	
	function insertData($str_name_k, $str_addres) {
		$sql = mysql_query("INSERT INTO TKassa(NAME_K, ADDRES) VALUES('$str_name_k', '$str_addres')");
	};
	
	function updateData($id, $str_name_k, $str_addres) {
		$sql = mysql_query("UPDATE TKassa SET NAME_K=$str_name_k, ADDRES=$str_addres WHERE ID=$id");
		//loadData();
	};
	
	function deleteData($id) {
		$sql = mysql_query("DELETE TKassa WHERE ID=$id");
		//loadData();
	};

	if (!isset($_POST['edTypeOper'])) {
		loadData();
		//echo 'alert(' . $_POST['edTypeOper'] . ')';
	} else {
		if (isset($_POST['edTypeOper']) == 'insert') {
			insertData($_POST['edName'], $_POST['edAddres']);
			echo 'alert(' . $_POST['edTypeOper'] . ')';
		} else {
			 if (isset($_POST['edTypeOper']) == 'update') {
				updateData($_POST['edCode'], $_POST['edName'], $_POST['edAddres']);
				echo 'alert(' . $_POST['edTypeOper'] . ' ' . $_POST['edCode'] . ')';
			} else {
				 if (isset($_POST['edTypeOper']) == 'delete') {
					deleteData($_POST['edCode']);
					echo 'alert(' . $_POST['edTypeOper'] . ' ' . $_POST['edCode'] . ')';
				};
			};
		};
	};/* else if (isset($_POST['edTypeOper']) == 'update') {
		int $id = $_POST['edCode'];
		updateData($id, $_POST['edName'], $_POST['edAddres']);
	};*/

	mysql_close($link);
?>
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914466
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Я принудительно json-ом скормить не могу.
сейчас смотрю каким дебагером посмотреть что скрипт возвращает
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914500
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Золотов Константин,

Ну вот вижу, что в рабочем варианте прописано 3 поля, селект тоже, вроде как * , а в первом посту - только 2 поля... куда по-вашему он должен запихать третье поле без описания?

Но, ещё раз. ИМХО, ошибка в ответе jtable в этом случае, по идее, должна быть иной. Попробуйте добавить описания всех имеющихся полей из таблички...
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914547
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Золотов Константин,

Ну вот вижу, что в рабочем варианте прописано 3 поля, селект тоже, вроде как * , а в первом посту - только 2 поля... куда по-вашему он должен запихать третье поле без описания?

Но, ещё раз. ИМХО, ошибка в ответе jtable в этом случае, по идее, должна быть иной. Попробуйте добавить описания всех имеющихся полей из таблички...
Не помогло, но вот какую ошибку вывел:
failed to load resource: the server responded with a status of 405 (Not Allowed)
в файле Test_data.php в конце строки </html>

В гуугле смотрю пока
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38914772
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

Какая то мистика.
Взял рабочий код (который работал)
изменил под свою структуру и все работает.
Сверил код строчка в строчку.
Буду думать
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38920199
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тему прошу считать закрытой.
Причина: банальная невнимательность.
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38924735
IrinaV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Золотов Константин,

здравствуйте, мне нужно вывести результат запроса в виде таблицы, посмотрела ваш пример, хотела воспользоваться jquery.jtable.js.
Скачала jquery-1.10.2.js, jquery.jtable.js, но вылезает ошибка TypeError: $(...).on is not a function в строке плагина jquery.jtable.js: $(window).on('beforeunload', function () {...
Может что-то еще нужно скачать? Не подскажете?
...
Рейтинг: 0 / 0
php+jtable не загружает данные
    #38932603
Золотов Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IrinaV,

Здравствуйте.
Предоставьте полный текст кода. посмотрю.
Я использую jquery, jquery.jtable, jquery-ui* (все)
css - jtablethemes (весь каталог)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php+jtable не загружает данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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