2011-06-24 8 views
0

jQuery jEditableプラグインを使用するサイトがあります(AJAX経由のインライン編集)。あなたが "Entrées"(これはレストランメニューを編集するためのものなので、そのような入力が期待されるはずです)のようなものを入力すると、値を取得するAJAX PHPスクリプトは代わりに "Entr es"を受け取ります。送信される値が正しく送信されるようにするにはどうすればよいですか?jQueryコードが特殊文字を正しく渡しません。

データベース値が "Entrées"として保存されているのはさらに奇妙ですが、Webページに表示されたときに "Entrées"が正しく表示されます。

答えて

0

私はこの問題を解決したかもしれないと思います。 encodeURI()の代わりにescape()を使うと正しく動作しました。それがなぜなのか誰も知っていますか?

エスケープは()返さ:ENTR%E9es

encodeURI()が返されました:ENTR%C3%A9es

非常に奇妙な。

+1

エスケープ文字はASCII文字では機能しますが、ASCII文字以外の文字を送信する場合は、encodeURIを使用してサーバー側でuridecodeを使用する必要があります。あなたのajax(get)パラメータがURLクエリ文字列として送信され、独自のルールを持っているため、これはあなたのページやコードとは関係ありません。 – nima

1

テキストが入力されたフォームだけでなく、表示されるページもUTF8エンコーディングを使用していることを確認してください。受け取った内容を確認するための「テスト」が単純なecho ...; exit;である場合、このページはUTF8としてレンダリングされていない可能性があります。

+0

ヘッダーに ''があります。それで十分ですか?私はまた、ヘッダーの文字セットを設定するためにPHPを使用する必要がありますか? (ちなみに、私はAJAXスクリプトに生の入力を.txtファイルに直接出力していますが、まだ "Entr es"を表示しています。) – TerranRich

+0

サーバから送信されたヘッダは、通常より優れており、ファイルに別のファイルが含まれていても使用できます。 – ThiefMaster

0

文字列を送信する前にjavascript encodeURI()関数を使用する必要があります。

+0

jEditableのコンテキストでそれを行う方法を知っていますか?ドキュメントはちょっとばかげて不完全です。私は、ドキュメンテーションそのものよりも役立つ情報をコメントで検索する必要があります。 :P – TerranRich

+0

私はそれを理解しました(ソースJSファイル自体を編集しただけです)。しかし、今度は "Entr%C3%A9es"という入力があり、これは "Entr es"と同じです。 > – TerranRich

+0

私はちょうどそれを言うつもりでした:)サーバーサイドの使用で今すぐOK http://msdn.microsoft.com/en-us/library/6196h3wt.aspx – nima

関連する問題