2012-03-27 8 views
1

Ich erstelle ein Basisformular mit Ajax senden mit jquery-Framework. Dies ist mein Code:Akzente senden mit jquery ajax Anfrage und codenigniter

$('form#contact_form').submit(function() { 
    $.ajax({ 
     type: $(this).attr('method'), 
     url: $(this).attr('action'), 
     data: $(this).serialize(), 
     success: function(data) { 
     } 
    }); 
}); 

Und ich benutze PHP-Datei mit einfachen var_dump($_POST) das Ergebnis zu zeigen.

Wenn ich durch die Abfrage einfacher PHP-Seite teste, funktioniert es perfekt.

Wenn ich durch Abfragung Funktion von meinem Kontaktsteuerpult auf CodeIgniter teste, sind alle Einzelteile meines Formulars, die Akzente sind (nicht spezielle Zeichen, nur Akzente wie "éàèù"), das Einzelteil leer.

Zur Information, alle meine Dateien haben UTF-8-Codierung.

Jemand wird wissen, wie ich dieses Problem beheben kann? Danke,

+0

verwenden Sie $ _POST oder $ this-> input-> post() in Ihrem Controller? Können Sie mit den Debugging-Tools von Firebug oder Chrome überprüfen, wie die Postdaten wirklich aussehen? Und zu Ihrer Information, das Submit-Ereignis hat keine "return false;" -Zeile. –

+0

Ich versuche mit $ _POST und $ this-> input-> post() und ich habe das gleiche Problem. – alexmngn

+0

Zur Information, in meinem Entwickler-Tool gibt es alle meine Parameter korrekt an meinen Controller – alexmngn

Antwort

0

Ich habe das Problem gefunden.

Tatsächlich verarbeitet das CodeIgniter-Framework eine "Reinigung" von Eingabevariablen in die Input-Bibliothek.

Da ich von meinem MAMP-Server entwickeln, gibt es einen Fehler davon. Es war notwendig, die Zeichensatzcodierung UTF-8 in utf-8 zu ändern und es funktioniert jetzt.

Vielen Dank für Ihr Interesse.

+0

Wie haben Sie diese Änderung vorgenommen? Ich habe auch das gleiche Problem! – Nyxynyx

0

erste Sache zu prüfen: Diese Bedingungen laden die UTF8-Bibliothek in codeigniter. Testen Sie sie nacheinander und prüfen Sie, ob sie alle wahr sind.

if (
     preg_match('/./u', 'é') === 1     // PCRE must support UTF-8 
     AND function_exists('iconv')     // iconv must be installed 
     AND ini_get('mbstring.func_overload') != 1  // Multibyte string function overloading cannot be enabled 
     AND $CFG->item('charset') == 'UTF-8'   // Application charset must be UTF-8 
     ) 

Zweitens ist es eine Funktion in Bibliotheken/Input.php dem Namen "_clean_input_data". Wahrscheinlich bereinigt diese Funktion Ihre Daten, bevor sie an den Controller gelangen.

Es gibt drei Arten der Reinigung im Inneren.

+0

Ich habe Ihren Test testen und diese Rückkehr wahr, so dass alle Akzente perfekt übergeben. Ich fühle meine Daten sind sauber zwischen dem Moment, wo es von Ajax gesendet und der Moment, wo es durch die Funktion, so im übergeordneten Controller vielleicht .. Ich suche weiterhin eine Lösung – alexmngn