Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.02.2016, 15:53
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
добавлять header() в начало файла php - выскакивает предупреждение, что оный файл уже установил заголовок, менять нельзя;
код дайте как пытаетесь установить заголовок в php.
Ответить с цитированием
  #12 (permalink)  
Старый 12.02.2016, 16:06
Новичок на форуме
Отправить личное сообщение для Vagrant Посмотреть профиль Найти все сообщения от Vagrant
 
Регистрация: 12.02.2016
Сообщений: 7

destus
header('Content-type: text/html; charset="utf-8"');


результат: Warning: Cannot modify header information - headers already sent by (output started at C:\WEB\www\new_menu\news.php:1) in C:\WEB\www\new_menu\news.php on line 3

собственно js-функции, которые грузят php:
function get_db() {
	$(document).ready(function(){
 	$("#soon-news").load("news.php");
 });

}


либо

function n_load() {
	$.ajax(
	{
		type: "GET",
		cache: false,
		url: "news.php",
		data: "",
		success: function(data)
		{
			$('#soon-news').html(data);
		}
	});
}


P.S. Если php-файл подключить через require(), то всё отображается как надо. Но мне надо, что-бы страница грузилась в любом случае, а нужный div - если БД доступна/открыта (она на другом сервере)

Последний раз редактировалось Vagrant, 12.02.2016 в 16:17. Причина: Добавил P.S.
Ответить с цитированием
  #13 (permalink)  
Старый 12.02.2016, 16:41
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

А что идет до 3ей строчки в news.php? Пустая строка и пробел перед <? тоже считается за вывод информации, соответсвенно нельзя установить заголовок.
Ответить с цитированием
  #14 (permalink)  
Старый 12.02.2016, 16:50
Новичок на форуме
Отправить личное сообщение для Vagrant Посмотреть профиль Найти все сообщения от Vagrant
 
Регистрация: 12.02.2016
Сообщений: 7

<?php	
	// http://javascript.ru/forum/jquery/11430-kodirovka-load.html
	header('Content-type: text/html; charset="utf-8"');
	if ($conn=oci_connect(...)) {


первая строчка начинается непосредственно с "<", вторая строчка - комментарий-подсказка (ссылка, где подсмотрел инфо про(headers()), третья - установка заголовка, четвертая - if(){ далее идет попытка подключения к базе. Cкрипт завершается закрытием "}" оного if()
Ответить с цитированием
  #15 (permalink)  
Старый 12.02.2016, 17:06
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

в .htaccess добавить

CharsetDisable On
AddDefaultCharset UTF-8
Ответить с цитированием
  #16 (permalink)  
Старый 12.02.2016, 17:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

1) база возвращает текстовые поля в кодировке Win-1251, которые php конвертирует с помощью iconv() в utf-8 - перевести данные базы в UTF единожды, чтобы не заставлять РНР заниматься постоянно лишней работой.

2) Все *.php, и *.js файлы сохранены в кодировке UTF-8 + BOM. - БЕЗ ВОМ! И это не для решения проблемы, а для того, чтобы предотвратить возможные (да практически неизбежные) "непонятные" проблемы впоследствии.

3) добавлять header() в начало файла php - выскакивает предупреждение, что оный файл уже установил заголовок, менять нельзя - вывод заголовка должен быть до любого вывода в браузер, чем является и ВОМ в том числе.

4) добавить .htaccess с текстом "AddDefaultCharset UTF-8" в каталог с php-файлами - установка кодировки по умолчанию устанавливается не на файлы каталога, а для данных отдаваемых сервером клиенту, кодировку файлов этот параметр не изменяет. Это информация для браузера.

5) грузить файл php пробовал и через .load() и через .ajax(get) - эти методы не грузят файл РНР, они запрашивают и получают данные результатов работы РНР файлов, к которым обращаются. В какой кодировке он их получит зависит или от переданного заголовка, или от AddDefaultCharset установленного в Апач.

6) проверил <meta> - там стоит utf-8 - если сервер отдает по умолчанию заголовки кодировки по умолчанию (AddDefaultCharset), то мета тег может быть и опущен.

Выполнить сначала по п. 1 и п. 2, а затем далее выяснять проблемы.

Последний раз редактировалось laimas, 12.02.2016 в 17:34.
Ответить с цитированием
  #17 (permalink)  
Старый 12.02.2016, 17:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от destus
в .htaccess добавить
Ну да, прямо раз и готово, а если косяки иные?
Ответить с цитированием
  #18 (permalink)  
Старый 12.02.2016, 18:14
Новичок на форуме
Отправить личное сообщение для Vagrant Посмотреть профиль Найти все сообщения от Vagrant
 
Регистрация: 12.02.2016
Сообщений: 7

Сообщение от laimas
перевести данные базы в UTF единожды, чтобы не заставлять РНР заниматься постоянно лишней работой.
я делаю так:
while (oci_fetch ($st)) {
	$employees[] = array(
	"fio" => iconv("windows-1251", "utf-8", oci_result($st, "FIO")),
	...
}

по-другому пока не умею

Сообщение от laimas
БЕЗ ВОМ! И это не для решения проблемы, а для того, чтобы предотвратить возможные (да практически неизбежные) "непонятные" проблемы впоследствии.
делал - не помогло. переделал все php и js-файлы. Так и оставил.

Сообщение от laimas
вывод заголовка должен быть до любого вывода в браузер, чем является и ВОМ в том числе.
устанавиваю заголовок в 3 строчке скрипта. первый вывод в браузер - в 5-й (временно - подтверждение коннекта к базе, потом будет не ранее 57-й)

Сообщение от destus
в .htaccess добавить

CharsetDisable On
AddDefaultCharset UTF-8
добавил. сам .htaccess положил в корень каталога со своей страничкой. Исходя из комментариев выше, браузер должен получить данные в кодировке UTF-8 (данные из каталога размещения .htaccess включая все подкаталоги)... НО не помогло. При этом Chrome почему-то получает данные в корректной кодировке, а FF и IE - нет.
Ответить с цитированием
  #19 (permalink)  
Старый 12.02.2016, 18:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Еще раз повторяю:

1) Перевести кодировку базы в UTF, а заниматься iconv("windows-1251", "utf-8",... постоянно при запросах, это нагружать сервер чепухой в то время, когда ему и так есть чем заняться. Нужно сделать единожды перекодровку и удалить из кода все преобразования iconv().

2) Забудьте раз и на всегда о БОМ, ибо это неконтролируемый вывод в браузер, который не раз породит проблемы при выдаче данных пользователю. Я писал, это нужно сделать обязательно, и не потому, что в данном случае они есть проблема с кодировкой.

3) Выполнить то что сказано в 1, 2.

Все, пока не сделаете это, дальнейший разговор бессмыслен будет, ибо тыкать наугад и все в кучу, это не решение проблемы причем тогда, когда явных корявостей много и они не устранены.

PS. По ссылке база MySQL у вас Oracle, поэтому использовать ее запросы и параметры. Главное понять суть, ну или найдете в сети сами ссылку именно по Oracle, я взял первую попавшуюся, думаю искать в Гугл и сами можете.

Последний раз редактировалось laimas, 12.02.2016 в 18:40.
Ответить с цитированием
  #20 (permalink)  
Старый 12.02.2016, 19:08
Новичок на форуме
Отправить личное сообщение для Vagrant Посмотреть профиль Найти все сообщения от Vagrant
 
Регистрация: 12.02.2016
Сообщений: 7

laimas,
если не хотите помочь по-сути - не стоит лишний раз напоминать мне о моем непонимании, я и без Вас в курсе, что не силен ни в JS, ни в PHP, поскольку изучаю их крайне мало времени. Сюда обратился за конкретной помощью именно потому, что не шарю.
А теперь по ходу дела:

1) У меня БД Oracle, а не MySQL, и данные туда пишет/читает совсем сторонний софт. Я использую одну единственную таблицу, да и то скорее ради попрактиковаться в работе связки PHP+Oracle. Менять кодировку БД я не буду, т.к. остальной софт может ее не понять.
Можно, конечно, конвертнуть 1 лишь таблицу, но тогда мне не пришлось бы писать сюда, и тем самым узнать для себя много нового.
Кроме того, на моем сервере аж 2 (две) веб-странички. Апач в общей сложности использует аж 50 МБ памяти и <1% процессора - ему и в самом деле нечем заняться ;-)

2) Повторю: я конвертнул кодовую страницу всех без исключения исходников (*.html, *.css, *.php, *.js) в UTF-8 БЕЗ BOM!!! И так оставил.

3) Кажется, проблема была в том, что после
<?php
стоял символ табуляции и/или перенос строки. Убрал их и Warning по поводу некорректности установки заголовка пропал, ирезультат отобразился как надо.

Всем откликнувшимся - спасибо за помощь.

P.S. уважаемый laimas, может подскажете, как без iconv() конвертнуть кодировку принимаемой для парсинга страницы, когда целевой сервер отдает ее в win-1251? А то в моем другом php-файлике есть и такая штуковина...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При отправке формы Аяксом возникает ошибка Veterinar jQuery 0 19.01.2014 14:39
firebug пишет ошибка invalid range in character class Dim@ Общие вопросы Javascript 5 10.05.2012 16:52
ошибка NS_ERROR_DOM_SECURITY_ERR h0kum Events/DOM/Window 2 18.12.2010 20:01
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
IE: неизвестная ошибка выполнения _Kpot_ Internet Explorer 1 03.04.2008 11:00