Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] Problem z kodowaniem
Forum PHP.pl > Forum > Przedszkole
Hectic
Witam,

korzystając z mootools napisałem funkcję do przesuwania newsów. Problem jest taki, że pierwszy ładowany news za pomocą php ma polskie znaki. Pozostałe ładowane za pomocą request już nie. Kodowanie w bazie mysql to utf-8. Funkcja wygląda tak:

Kod
function news_move(id) {
var start = new Fx.Slide('news_main', {duration: 1500}).slideOut().chain(function(){
    
    var request = new Request({
        url: 'requestnews.php',
        method: 'get',
        onComplete: function(response) {
            $('news_main').set('html',response);
            var stop = new Fx.Slide('news_main', {duration: 1500}).slideIn();
        }
    });
    request.setHeader('Content-Type','text/html; charset=utf-8');
    request.send('id=' + id);
    
});
}


Do pliku php dodałem

  1. <?php
  2. header('Content-Typ: text/html; charset=utf-8');
  3. ?>


zazwyczaj pomagało, lecz teraz nie działa. Dodałem również ustawienie nagłówka w funkcji js (lecz nie wiem czy to jest dobrze zrobione)
Proszę o pomoc i z góry dziękuje
golaod
To jeszcze plik ze skryptem js i php zmień na kodowanie utf8 smile.gif a w szczególności z JS.
Hectic
Cytat(golaod @ 22.09.2008, 11:50:34 ) *
To jeszcze plik ze skryptem js i php zmień na kodowanie utf8 smile.gif a w szczególności z JS.


Nie do końca rozumiem bo mam tam ustawione utf-8 ;p Skrypt js podałem teraz php:

  1. <?php
  2. header('Content-Typ: text/html; charset=utf-8');
  3.  
  4. define('IN_COPPERMINE', true);
  5.  
  6. global $prefix, $dbi;
  7.  
  8. if(!empty($_GET['id'])) {    
  9.    include('include/config.inc.php');
  10.    
  11.    mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
  12.    mysql_select_db($CONFIG['dbname']);
  13.    
  14.    $query = "SELECT id, author, title, text, date FROM $CONFIG[TABLE_NEWS] WHERE id = '$_GET[id]' LIMIT 1;";
  15. }
  16. else {
  17.    $query = "SELECT id, author, title, text, date FROM $CONFIG[TABLE_NEWS] ORDER by id DESC LIMIT 1;";
  18. }
  19.  
  20. $result = mysql_query($query);
  21. $r = mysql_fetch_array($result);
  22. $id = $r[0];
  23. $author_id = $r[1];
  24. $title = $r[2];
  25. $text = $r[3];
  26. $date = $r[4];
  27.  
  28. $query = "SELECT user_name, user_sub  FROM $CONFIG[TABLE_USERS] WHERE user_id = '$author_id' LIMIT 1;";
  29. $result = mysql_query($query);
  30. $r = mysql_fetch_array($result);
  31. $author = $r[0];
  32. $subdomain = 'htt://'.$r[1].$CONFIG['subdomain_domain'];
  33.  
  34. <div id="news_main">
  35. <div class="news_div">
  36. <div id="news_info">
  37. <div id="news_title"><b>'.$title.'</b> by <a href="'.$subdomain.'">'.$author.'</a></div>
  38. <div id="news_date">'.$date.'</div>
  39. </div>
  40. <div id="news_move">';
  41.  
  42. $next = $id + 1;
  43. $back = $id - 1;
  44.  
  45. $query = "SELECT title FROM $CONFIG[TABLE_NEWS] WHERE id = '$back' LIMIT 1;";
  46. $result = mysql_query($query);
  47. $r = mysql_fetch_array($result);
  48.  
  49. if(!empty($r[0])) {
  50.    echo '<a href="javascrip:news_move('.$back.');"><img src="themes/rainy_day/images/news_back.png" border="0" title="Poprzedni" /></a>';
  51. }
  52.  
  53. $query = "SELECT title FROM $CONFIG[TABLE_NEWS] WHERE id = '$next' LIMIT 1;";
  54. $result = mysql_query($query);
  55. $r = mysql_fetch_array($result);
  56.  
  57. if(!empty($r[0])) {
  58.    echo '<a href="javascrip:news_move('.$next.');"><img src="themes/rainy_day/images/news_next.png" border="0" title="Następny" /></a>';
  59. }
  60. else {
  61.    echo '<img src="themes/rainy_day/images/separ.gif" width="72" height="19" border="0" />';
  62. }
  63.  
  64. </div>
  65. </div>
  66. <img src="themes/rainy_day/images/news_line.png" border="0" />
  67. <div class="news_div">
  68. <div id="news_text">'.$text.'</div>
  69. </div>
  70. </div>';
  71.  
  72. ?>
guilty82
może to?
Hectic
Niestety nie... tak jak pisałem pierwszy news jest ładowany za pomocą php i tam są polski znaki. Problem zaczyna się po wysłaniu requesta przez js.
golaod
Nie wiem jakiego edytora tekstowego używasz ale większość z nich ma to do siebie, że jeżeli nie ma żadnego znaku specjalnego w pliku a ty dajesz mu inne kodowanie właśnie np. utf8 to nie zostanie ono dodane do pliku...bo edytor stwierdzi, że jest nie potrzebne skoro i tak masz tylko zwykłe litery.
Zatem radze zawsze dodawać do pliku //ą np. po <?php i dopiero wtedy konwertować do utf8 (będziesz miał wtedy większą pewność)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.