powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ajax автозаполнение полей на русском языке
6 сообщений из 6, страница 1 из 1
Ajax автозаполнение полей на русском языке
    #38903637
dakota1310
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, очень нужна помощь. Нужно сделать поле с автозаполнением городов на русском языке, использую autocomplete. Но при вводе в поле русских букв результат выводится как null столько раз сколько должно было быть городов и почему-то букву "o" он пишет как "н". В базе данных кодировка полей utf8.
Мой код:
auto.js (кодировка windows-1251)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
$('#locality_name').autocomplete({ 
		      	source: function( request, response ) {
		      		$.ajax({					
		      			url : 'ajax.php',
		      			dataType: "json",
						data: {
						   name_startsWith: request.term,
						   type: 'locality'
						},
						 success: function( data ) {
							 response( $.map( data, function( item ) {
								return {
									label: item,
									value: item
								}
							}));
						}
		      		});
		      	},
		      	autoFocus: true,
		      	minLength: 0      	
		      });



ajax.php (кодировка windows-1251)
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
header("Content-Type: text/html; charset=windows-1251");
include("config/config.php");

if($_GET['type'] == 'locality'){
  $data= array("SELECT locality FROM locality where locality LIKE '".strtoupper($_GET['name_startsWith'])."%'");
  $_GET['name_startsWith'] = iconv('UTF-8', 'windows-1251', $_GET['name_startsWith']);

  $result = mysql_query("SELECT locality_name FROM locality where locality_name LIKE '".strtoupper($_GET['name_startsWith'])."%'");	
  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
		array_push($data, $row['locality_name']);	
	}	
  echo json_encode($data);
} 
...
Рейтинг: 0 / 0
Ajax автозаполнение полей на русском языке
    #38903714
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakota1310В базе данных кодировка полей utf8А на странице, так понимаю, кодировка cp1251. Тогда перед использованием в запросе кодировка полученных от клиента данных должны быть преобразована к кодировке БД. Полученные из БД данные перед отдачей клиенту следует обратно перекодировать.

PS: Может, тогда проще сменить кодировку БД?
...
Рейтинг: 0 / 0
Ajax автозаполнение полей на русском языке
    #38903755
dakota1310
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовала, перестало вообще приходить даже null значения((
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if($_GET['type'] == 'locality'){
    $_GET['name_startsWith'] = iconv('windows-1251', 'UTF-8', $_GET['name_startsWith']);
	$result = mysql_query("SELECT locality_name FROM locality where locality_name LIKE '".strtoupper($_GET['name_startsWith'])."%'");	

	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
	        $row['locality_name'] = iconv('UTF-8', 'windows-1251', $row['locality_name']);
		array_push($data, $row['locality_name']);	
	}	
	echo json_encode($query);
}
...
Рейтинг: 0 / 0
Ajax автозаполнение полей на русском языке
    #38903780
dakota1310
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фух, заработало))
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
if($_GET['type'] == 'locality'){
    $_GET['name_startsWith'] = iconv( 'UTF-8', 'windows-1251', $_GET['name_startsWith']);
	$result = mysql_query("SELECT locality_name FROM locality where locality_name LIKE '".strtoupper($_GET['name_startsWith'])."%'");	
    $data = array();
	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
	   $row['locality_name'] = iconv( 'windows-1251', 'UTF-8', $row['locality_name']);
		array_push($data, $row['locality_name']);	
	}	
	echo json_encode($data);
}
...
Рейтинг: 0 / 0
Ajax автозаполнение полей на русском языке
    #38903783
dakota1310
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, ОГРОМНОЕ СПАСИБО ))))
...
Рейтинг: 0 / 0
Ajax автозаполнение полей на русском языке
    #38905035
dakota1310
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите с кодировкой. Использую плагин datatables ( http://datatables.net/) в таблице русские символы не отображаются. Кодировка таблицы базе utf8.
Код функции:
Код: 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.
static function simple ( $request, $conn, $table, $primaryKey, $columns )
	{
		$bindings = array();
		$db = self::db( $conn );

		// Build the SQL query string from the request
		$limit = self::limit( $request, $columns );
		$order = self::order( $request, $columns );
		$where = self::filter( $request, $columns, $bindings );

		// Main query to actually get the data
		$data = self::sql_exec( $db, $bindings,
			"SELECT SQL_CALC_FOUND_ROWS `".implode("`, `", self::pluck($columns, 'db'))."`
			 FROM `$table`
			 $where
			 $order
			 $limit"
		);

		// Data set length after filtering
		$resFilterLength = self::sql_exec( $db,
			"SELECT FOUND_ROWS()"
		);
		$recordsFiltered = $resFilterLength[0][0];

		// Total data set length
		$resTotalLength = self::sql_exec( $db,
			"SELECT COUNT(`{$primaryKey}`)
			 FROM   `$table`"
		);
		$recordsTotal = $resTotalLength[0][0];


		/*
		 * Output
		 */

		return array(
			"draw"            => intval( $request['draw'] ),
			"recordsTotal"    => intval( $recordsTotal ),
			"recordsFiltered" => intval( $recordsFiltered ),
			"data"            => self::data_output( $columns, $data )
		);
	}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ajax автозаполнение полей на русском языке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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