xmlhttpreqeust を使用したフォーム送信メソッドを実装しました。フォームと一緒にファイルを送信できる新しい html5 機能、FormData を見ました。涼しい!ただし、アクセント付きの文字、特に Word が作成するばかげたスマート クォートには問題があります (そうです、私はこれらの文字に対して少し偏見があります)。昔ながらの方法で隠し iframe に送信していましたが、そこに置かれたさまざまな奇妙な文字に問題はありませんでした。でも、これでいいのかなと思いました。それはより大きな頭痛の種であることが判明しています:-/
コードを見てみましょう。私のJavaScript関数(コメントアウトされた行に注意してください):
var xhr = new XMLHttpRequest();
var fd = new FormData(form);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.open($(form).attr('method'), $(form).attr('action'));
//xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
xhr.send(fd);
これは短縮されたビューです。関数全体を表示するには、http://archive.cyark.org/sitemanager/sitemanager.jsの行 1510 をチェックしてください。
次に、受信 php ページの上部に次のように表示されます。
header('Content-Type: text/html; charset=ISO-8859-1');
続いて、いくつかの基本的な php を実行して、投稿データで文字列を作成し、それを更新として mysql に送信します。
それで、私は何をしますか?javascript の content-type 設定のコメントを外すと、php スクリプトの POST データが完全に壊れてしまいます。問題が javascript にあるのか、php にあるのか、mysql にあるのかわかりません。何かご意見は?